struct student{
int id;
int score;
};
struct student* allocate(){
struct student* students = (struct student*)malloc(sizeof(struct student)*10);
return students;
}
void generate(struct student* students){
int i=0;
printf("%lu\n", sizeof(students));
printf("%lu\n", sizeof(struct student));
int length = sizeof(students)/sizeof(struct student);
printf("%d\n", length);
for(i=0;i<length;i++){
printf("hi\n");
}
}
10 개의 학생 구조체 배열을 생성해야하는이 코드가 있습니다. }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} 함수를 생성하고 학생 배열에 할당 된 메모리의 양을 확인하려고하면 단일 학생 구조체와 동일한 8 바이트 만 쓰고 for 루프에 도달하면 한 번만 'hi'를 인쇄한다. 그것은 8 번해야합니다. 나는 무엇을 잘못 했는가?C가 구조체 배열에 메모리를 올바르게 할당하지 못 했습니까?
출력 :
8
8
1
hi
"... 학생 배열이 할당 한 메모리 양을 확인하는 중 ...". 그 이유는'sizeof' 연산자가 그 목적에 적합한 것이라고 믿게 만들었던 이유가 무엇입니까? 'sizeof' 사용법에 대해 어떻게 생각해 냈습니까? – AnT
sizeof (students)는 배열의 크기가 아니라 포인터의 크기를 제공합니다. –
배열의 크기를 얻는 가장 좋은 방법은 무엇입니까? – izzzi