C언어/C - knk

7.5 sizeof , 8. array

twoweeks-within 2024. 11. 20. 15:42

sizeof : 단항연산자

sizeof i + j >> ( sizeof i ) + j

 > size_t 로 implementation-defined

 

size_t : unsigned integer type

%lu , (unsigned long) sizeof()

 

C99 trick

%z(u) , sizeof()

 

subscripting or indexing

배열 요소 안에 접근하고자 [ ] 안에 값을 쓰는것

 

배열의 범위를 벗어나면,,

int a[10], i;

 for (i = 1; i <= 10; i++){

      a[i] = 0;

  }

 :  a[10] 은 a[9] 의 다음 주소로 넘어감

 만약 i 가 다음 주소라면 i=0 이되어 무한루프를 돎 

for문 1번조건 > 2번조건 > 3번조건>2번조건>3번조건,,,

 

두번 참조 조심

a[i] = b[i++]  // i++ 을 먼저할지 , i 를 먼저 할지 알 수 없음

> for (i = 0; i < N; i++) a [i] = b [i] ;

 

배열 규칙

배열이 선언되지 않은 나머지는 0 으로 초기화,

{ 0 } : 모두 0 으로 초기화

완전 비워두는 것은 규칙위반

초기화가 되어있으면 값의 크기는 지정 안해도됨 : int a [] = {1, 2, 3};

 

designator

배열 요소 지정가능하며, 나머지는 0으로 초기화

int a [30] = {[2] = 29, [9] = 7, [14] = 48};

==

int a [30] = {[14] = 48, [9] = 7, [2] = 29};

 

짧고 읽기 편하고 순서 상관 없음

but integer constant expressions 이여야함

배열의 길이가 생략되면 > 가장큰 designator 로 길이를 유추함

   > int b [] = { [30] = 10}; , array length 31 

 

int ctlO] = {5, 1, 9, [4] = 3, 7, 2, [8] = 6};

두개 혼합도 가능하며, 나머지는 0 으로 초기화

'C언어 > C - knk' 카테고리의 다른 글

4장  (0) 2024.11.16
printf, scanf  (1) 2024.11.15
변수, 대입, 초기화  (0) 2024.11.12
1장 . 역사,장단점,난해한 C (8퀸문제),,  (1) 2024.11.09