반응형
배열이 할당되면 당연히 그 크기에 맞는 메모리가 스택에 할당된다.
int a[30] 배열이 있을 때, C언어에서 이 배열의 길이를 구하려면
sizeof(a)/sizeof(a[0]) = 30 이 나온다. 여기서 헷갈리지 말아야 할 점은, 요소가 얼마나 채워져있느냐에 상관없이 할당된 크기 그 자체를 갖는다는 것.
나는 당연히 알고 있었지만, 다른 게시글들을 보며 괜히 혼동이 왔다.
배열의 전체 길이를 확인하는 방법이지, 요소가 얼마나 들어있는지 확인 할 수 있는게 아니라는것.
스택 학적으로 생각해보면 당연하다.
int a[5] = {1, 2};
printf("%ld", sizeof(a));
Output : 20
int b[5];
printf("%ld", sizeof(b));
Output : 20
20인 이유는 int가 4바이트 x 5
반응형
'[알아두면 좋을 것들]' 카테고리의 다른 글
행렬 곱셈 (0) | 2020.12.14 |
---|---|
[Atom] Script (0) | 2020.12.11 |
배열 포인터 vs 포인터 배열 (0) | 2020.12.02 |
[MBTI] ESTJ 관통당했다. (0) | 2020.11.18 |
티스토리 이미지 업로드 오류 시 해결방법 ㅋㅋㅋㅋ (0) | 2020.09.27 |