배열을 스스로의 머리로 생각해서 쓰는 처음 코드다.
파이썬 처럼 for 문을 sizeof(array)의 값 만큼 반복하면 되겠지?
했는데 i 에 이상한 것들이 들어온다.
1번째 원소 : 53, 2번째 원소:253 ....
우선 띄어쓰기를 하고, sizeof(dream)으로 배열의 길이(38)을 받아오는 것을 목표로 간단하게 코드를 진행했다.
/*배열에다가 포인터를 써보는 예제이다.*/
#include <stdio.h>
int main() {
int i;
/*배열을 만드는 법을 아는가?*/
int dream[] = { 53,253,2421,24,124,2,43,53,2,34,3,2,2,3,2,531,3,51,3,1,2,3,12,4,32,432,1,3,1,2,12,31,23,12,4,32,432,5};
printf("배열의 사이즈 : %d\n", sizeof(dream));
for (i = 0; i < sizeof(dream); i++) {
printf("%d번째 원소: %d\n", i + 1, dream[i]);
}
int monotonous[] = { 1,2,3,4,5,6,7,8,9 };
/*for (i = 0; i < sizeof(monotonous); i++) {
printf("%d번째 원소: %d\n", i + 1, monotonous[i]);
}*/
return 0;
}
그런데, 배열의 사이즈가 38이 아니라, 152가 나온다;;;;
그래서 시험차 아래에 int monotonus[] = {1,2,3,4,5,6,7,8,9};
로 배열의 사이즈를 구해보니, 36이 나온다.
아하!
int 배열이 int 38개를 담으면 sizeof 는 int에서 4바이트이므로 4를 출력했던 것처럼, 38x4=152 이라고 출력하는 것이다.
monotonous 배열이 9개의 int를 담고있으니, 해당 배열의 sizeof 함수 결과물은 9x4=36 이라고 말해준다.
정확히 배열의 요소 개수만큼 반복하려면 자료형의 바이트 크기만큼으로 나눠줘야겠다.
성공!
코드는 아래와 같이 적었다.
/*배열에다가 포인터를 써보는 예제이다.*/
#include <stdio.h>
int main() {
int i;
/*배열을 만드는 법을 아는가?*/
int dream[] = { 53,253,2421,24,124,2,43,53,2,34,3,2,2,3,2,531,3,51,3,1,2,3,12,4,32,432,1,3,1,2,12,31,23,12,4,32,432,5};
printf("배열의 사이즈 : %d\n", sizeof(dream));
for (i = 0; i < sizeof(dream)/sizeof(int); i++) {
printf("%d번째 원소: %d\n", i + 1, dream[i]);
}
int monotonous[] = { 1,2,3,4,5,6,7,8,9 };
printf("배열의 사이즈 : %d\n", sizeof(monotonous));
/*for (i = 0; i < sizeof(monotonous); i++) {
printf("%d번째 원소: %d\n", i + 1, monotonous[i]);
}*/
return 0;
}