0
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層學生結構的陣列。當我到達generate函數並嘗試查看學生數組分配了多少內存時,它只能說8個字節,與單個學生結構本身相同,當我進入for循環時,它僅在打印時發出「hi」一次應該是8次。我做錯了什麼?C沒有正確地爲結構數組分配內存嗎?
輸出:
8
8
1
hi
「......查看學生陣列分配了多少內存......」。是什麼讓你相信operator'sizeof'適合這個目的?你是怎麼想出使用'sizeof'的想法的? – AnT
sizeof(students)給你一個指針的大小,而不是數組的大小。 –
那麼獲得數組大小的最佳方法是什麼? – izzzi