" async="async"> ', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); 책 알려주는 남자 :: 쉽게 풀어쓴 C언어 Express 10장 Summary

10장 Summary


배열 원소에 붙여져 있는 번호를 인덱스(index) 또는 첨자(subscript)라고 한다.

배열 a의 i번째 원소는 a[i]와 같이 참조한다.

int a[10];과 같이 선언된 배열에서 사용할 수 있는 인덱스의 값은 0에서 9까지이다.

정수형 배열 a[6]을 선언하고 1, 2, 3, 4, 5, 6으로 초기화하는 문장은 int a[6] = {1, 2, 3, 4, 5, 6};과 같다.

배열의 크기를 주지 않고 초기값(1, 2, 3, 4, 5, 6)의 개수로 배열의 크기를 결정하려면 int a[] = {1, 2, 3, 4, 5, 6}와 같이 선언한다.
// #define SIZE 3 이고 int a[SIZE] = {1, 2, 3} 이면 컴파일 오류다!

배열 a의 크기를 자동적으로 계산하려면 수식 sizeof(배열)/sizeof(배열원소);을 사용한다.

초기값의 개수가 배열 원소의 개수보다 적은 경우에는 나머지 원소들은 0값으로 초기화 된다.

int a[3][5][2]와 같이 정의된 배열에서 원소의 총개수는30(3*5*2)이다.

배열을 함수의 인수로 보내면 원본이 전달된다.
("값의 호출에 의한" 매개변수 복사가 아님, 배열 원소를 인수로 하여 함수호출하면 복사본이 전달된다.) 

배열을 함수의 인수로 전달할 때 원본 배열의 변경을 금지하고 싶으면 const 지정자을 매개 변수 앞에 붙인다.

하나의 배열을 다른 배열로 통째로 대입하거나 비교할 수 있는가? 즉 배열a[]와 배열b[]가 있을 때 다음과 같은 문장이 가능한가?



틀린 예시 (대입, 비교)

 바른예시 (대입, 비교)

int a[10], b[10];

a=b;

if(a==b) 
      printf("같음");

 int i, a[10], b[10];

 for(i=0; i<10; i++)
 {
      if (a[i] == b[i])
            printf("같음");
 }

 int a[SIZE] = {1, 2, 3, 4, 5};
 int b[SIZE] = {1, 2, 3, 4, 5};

 if (a==b)
      printf("같습니다");
 else
      printf("다릅니다");

 int a[SIZE] = {1, 2, 3, 4, 5};
 int b[SIZE] = {1, 2, 3, 4, 5};

 for(i=0; i<SIZE; i++)
 {
      if(a[i] != b[i])
       {   
           printf("다릅니다");
           break;
       }
 }



배열의 크기가 음수, 실수, 변수이거나 비어있으면 컴파일 오류다. (단, #define을 통한 기호 상수는 가능하다)

배열을 초기화할 때 일부만 주면 나머지 원소들은 0으로 초기화된다.

블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,