강좌 & 팁
배열 Array
배열은 동일한 자료형의 데이터들이 여러개 있을 때 사용하면 편하다.
배열의 선언은
자료형 배열이름[배열크기];
이며
int list[10]; 이면 int형을 자료형으로 하는 기억공간 10개가 만들어진다.
list[0] | |
list[1] | |
list[2] | |
list[3] | |
list[4] | |
list[5] | |
list[6] | |
list[7] | |
list[8] | |
list[9] |
위와 같이 int형 변수가 10개 생성되며, 0~9 까지의 번호를 가진다.
배열의 초기화는 다음과 같이 가능하다
int list[3] = { 1, 2, 3 };
int list[] = {1, 2, 3};
int list[3] = {1,2};
int list[3];
list[0] = 1;
list[1] = 2;
list[2] = 3;
여러 가지 방법으로 배열의 초기화가 가능하다.
문자의 초기화방법은
char ch[] = {'f', 'a', 'l', 'n', 'u', 'x'};
char ch[] = "falinux";
아래는 falinux 문자뒤에 \0 이라는 문자의 끝을 의미하는 null문자가 하나더 들어가서 크기가 하나더 커진다.
다음의 예제를 통해서 배열의 사용을 알아보자
#include <stdio.h>
int main()
{
int iarray[] = {3,4,5,6,7};
int *p = iarray;
char carray[] = {3,4,5,6,7};
printf("%d\n", iarray[3]);
printf("%d\n", 3[iarray]);
printf("%d\n", *(iarray+0));
printf("%d\n", *(iarray+1));
printf("%d\n", *p);
printf("%d\n", *(p+1));
printf("%d\n", p[1]);
printf("%d\n", 1[p]);
printf("%d\n", &carray);
printf("%d\n", &carray+1);
return 0;
}
<프로그램 설명>
iarray[3]와 *(iarray+3)는 같다. iarray 는 주소이며 *(3+iarray)라고도 쓸 수 있다.
*()가 [] 와 같고 이를 그대로 대입하면 3[iarry]라고 쓸 수 있다.
포인터 변수 p에 iarray 를 담으면 주소값이 들어가므로 *p의 값은 3을 가리킨다.
&carray 주소는 맨처음값 3의 주소이며 & carray + 1을 하게되면 맨끝 7의 다음 번지를 가리킨다. *&에 주의 하자. *carray + 1 은 3+1 로 4이며 *(carray + 1) 은 주소를 자료형의 크기만큼 이동시켜 4가 출력 되는 것이다.