티스토리 뷰
1) 목표
- 배열 이해하기
- 배열 초기화 이해하기
2) 설명
// 배열 선언하는 방법
// type 변수명[크기];
char cbuf[5];
int nbuf[5];
// 배열 선언과 동시에 값을 할당하는 방법
char cbuf[5] = {'h','e','l','l','o'};
int nbuf[5] = {1,2,3,4,5};
// 배열의 값을 참조하는 방법
cbuf[2]
nbuf[3]
▶ 배열을 선언하는 방법은
타입 변수명[크기]; -> [ ] 로 선언합니다. 변수명에 []가 있으면 배열로 보시면 됩니다.
변수가 선언되면 메모리에 할당된다고 말씀드렸는데, 배열도 위와 같이 cbuf[5]로 선언되면
char 타입 크기로 5개의 메모리가 할당됩니다. char 타입의 크기는 sizeof()로 구할수 있다고 말씀드렸지요.
char 크기는 1바이트 그래서 5바이트의 크기가 할당됩니다.
메모리 -> 1바이트 크기의 [0][1][2][3][4] 가 할당 됩니다. cbuf[5]는 char 값을 5개 담을 수 있습니다.
int nbuf[5]으로 선언되면 int 타입의 크기로 5개가 할당됩니다. int 크기는 4바이트입니다.
메모리 -> 4바이트 크기의 [0][1][2][3][4] 가 할당 됩니다. nbuf[5]는 int 값을 5개 담을 수 있습니다.
▶ 초기화 하는 방법
- 선언시 초기화
char cbuf[5] = {'h','e','l','l','o'};
{ 값 } 를 사용해서 초기화 하실 수 있습니다.
[0][1][2][3][4]
h e l l o ==> 메모리에 값이 들어갑니다.
- 배열의 인덱스로 값을 할당
cbuf[5]는 char 값을 5개 담을수 있는데 배열에 값을 할당하는 방법은 인덱스를 사용해서 할당 하실 수 있습니다.
cbuf[0] = 'h';
cbuf[1] = 'e';
cbuf[2] = 'l';
cbuf[3] = 'l';
cbuf[4] = 'o';
이렇게 배열의 순번(인덱스)을 사용해서 값을 할당 하실 수 있습니다.
※ c언어에서 배열의 인덱스는 0 부터 시작합니다. 중요하니 외워두세요!
▶ 배열의 값을 참조하는 방법
인덱스를 사용해서 하시면 됩니다.
cbuf[4]; // 'o'값을 참조하실 수 있습니다.
3-1) 예제프로그램
▶ vi arr.c
#include <stdio.h>
// 배열을 선언과 동시에 값을 할당하는 방법
int main() {
char cbuf[5] = {'h', 'e', 'l', 'l', 'o'};
int nbuf[5] = {1, 2, 3, 4, 5};
int i;
// 배열의 값을 출력해 봅니다.
printf("----- char타입의 cbuf 출력 -----\n");
for (i = 0; i < 5; i++) {
printf("cbuf[%d]=%c\n", i, cbuf[i]);
}
printf("----- int타입의 nbuf 출력 -----\n");
for (i = 0; i < 5; i++) {
printf("nbuf[%d]=%d\n", i, nbuf[i]);
}
return 0;
}
▶ 컴파일/실행
~/c-lecture (master ✘)✭ ᐅ gcc -o arr arr.c
~/c-lecture (master ✘)✭ ᐅ ./arr
----- char타입의 cbuf 출력 -----
cbuf[0]=h
cbuf[1]=e
cbuf[2]=l
cbuf[3]=l
cbuf[4]=o
----- int타입의 nbuf 출력 -----
nbuf[0]=1
nbuf[1]=2
nbuf[2]=3
nbuf[3]=4
nbuf[4]=5
~/c-lecture (master ✘)✭ ᐅ
▶ 분석
- char cbuf[5] = {'h', 'e', 'l', 'l', 'o'};
int nbuf[5] = {1, 2, 3, 4, 5};
선언과 동시에 값을 할당
...
// 배열의 값을 출력해 봅니다.
printf("----- char타입의 cbuf 출력 -----\n");
for (i = 0; i < 5; i++) {
printf("cbuf[%d]=%c\n", i, cbuf[i]);
}
printf("----- int타입의 nbuf 출력 -----\n");
for (i = 0; i < 5; i++) {
printf("nbuf[%d]=%d\n", i, nbuf[i]);
}
- for문을 사용해서 출력합니다. 배열의 크기가 5이므로 for반복문을 사용합니다.
for 문에서 i값을 0 부터 5보다 작을때 까지 동작합니다.
즉, 0 ~ 4까지 동작합니다. 위에서 배열은 0 부터 시작한다고 설명을 드렸지요.
그래서 for문 안의 printf()문 cbuf[i]는 cbuf[0], cbuf[1], cbuf[2], cbuf[3], cbuf[4]로 정확히 치환됩니다.
printf문에서 char타입을 출력하는 서식 %c 를 사용해서 cbuf[5]를 출력합니다.
printf문 cbuf[%d] 는 출력시 배열의 인덱스, 여기서는 i값이 되겠죠. cbuf의 인덱스를 출력합니다.
아래 int nbuf[5]도 같은 방식으로 동작합니다.
3-2) 배열크기 생략
▶ vi arr2.c
#include <stdio.h>
// 배열을 선언과 동시에 값을 할당하는 방법
int main() {
char cbuf[] = {'h', 'e', 'l', 'l', 'o'};
int nbuf[] = {1, 2, 3, 4, 5};
int i;
// 배열의 값을 출력해 봅니다.
printf("----- char타입의 cbuf 출력 -----\n");
for (i = 0; i < 5; i++) {
printf("cbuf[%d]=%c\n", i, cbuf[i]);
}
printf("----- int타입의 nbuf 출력 -----\n");
for (i = 0; i < 5; i++) {
printf("nbuf[%d]=%d\n", i, nbuf[i]);
}
return 0;
}
▶ 컴파일/실행
~/c-lecture (master ✘)✭ ᐅ gcc -o arr2 arr2.c
~/c-lecture (master ✘)✭ ᐅ ./arr2
----- char타입의 cbuf 출력 -----
cbuf[0]=h
cbuf[1]=e
cbuf[2]=l
cbuf[3]=l
cbuf[4]=o
----- int타입의 nbuf 출력 -----
nbuf[0]=1
nbuf[1]=2
nbuf[2]=3
nbuf[3]=4
nbuf[4]=5
~/c-lecture (master ✘)✭ ᐅ
▶ 분석
- 배열을 선언과 동시에 값을 할당하는 경우 배열의 크기를 생략하실 수 있습니다.
char cbuf[] = {'h', 'e', 'l', 'l', 'o'};
※ 초기값을 할당 안하는 배열의 경우 크기를 생략하실 수 없습니다.
char cbuf[];
이런 경우는 컴파일시 오류가 발생합니다.
3-3) 값을 할당하는 예제프로그램
▶ vi arr3.c
#include <stdio.h>
int main() {
char cbuf[5];
int nbuf[5];
int i;
// 배열의 값을 할당
cbuf[0] = 'h';
cbuf[1] = 'e';
cbuf[2] = 'l';
cbuf[3] = 'l';
cbuf[4] = 'o';
nbuf[0] = 1;
nbuf[1] = 2;
nbuf[2] = 3;
nbuf[3] = 4;
nbuf[4] = 5;
// 배열의 값을 출력해 봅니다.
printf("----- char타입의 cbuf 출력 -----\n");
for (i = 0; i < 5; i++) {
printf("cbuf[%d]=%c\n", i, cbuf[i]);
}
printf("----- int타입의 nbuf 출력 -----\n");
for (i = 0; i < 5; i++) {
printf("nbuf[%d]=%d\n", i, nbuf[i]);
}
return 0;
}
▶ 컴파일/실행
~/c-lecture (master ✘)✭ ᐅ gcc -o arr3 arr3.c
~/c-lecture (master ✘)✭ ᐅ ./arr3
----- char타입의 cbuf 출력 -----
cbuf[0]=h
cbuf[1]=e
cbuf[2]=l
cbuf[3]=l
cbuf[4]=o
----- int타입의 nbuf 출력 -----
nbuf[0]=1
nbuf[1]=2
nbuf[2]=3
nbuf[3]=4
nbuf[4]=5
~/c-lecture (master ✘)✭ ᐅ
▶ 분석
- 배열의 값을 인덱스를 사용해서 할당하는 예제입니다.
실행해 보면 위의 예제와 동일합니다.
'리눅스 C-언어 초급과정' 카테고리의 다른 글
12. 문자열(string) (1) | 2022.11.16 |
---|---|
11. 다차원 배열 (0) | 2022.11.16 |
9. do~while문 (0) | 2022.11.15 |
8. while문 (0) | 2022.11.15 |
7. for문 (0) | 2022.11.14 |
- Total
- Today
- Yesterday
- Call-By-Reference
- IPC
- memcpy
- GCC
- 소켓
- #ifdef
- 의유
- While
- #include
- 전처리기
- 포인터
- #define
- Clang
- memset
- Member
- struct
- 배열
- strcpy
- c프로그램
- 리눅스
- 파라메타
- 문자열
- array
- 재고
- String
- Linux
- Call-by-value
- sharetravelplan
- Pointer
- C언어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |