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 |