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の学生構造の配列を作成する必要がありますこのコードを持っています。私が関数を生成して、生徒配列に割り当てられたメモリ量を調べようとすると、8バイトと書かれています。これは単一の学生構造体と同じです。forループに到達すると、それは8回でなければならない。私は何を間違えたのですか?構造体の配列にメモリが正しく割り当てられていませんか?
出力:
8
8
1
hi
"...学生の配列が割り当てたメモリ量を確認する..."何故、演算子 'sizeof'がその目的に適していると思いましたか? 'sizeof'を使う考えはどうでしたか? – AnT
sizeof(students)は、配列のサイズではなく、ポインタのサイズを指定します。 –
配列のサイズを取得する最も良い方法は何でしょうか? – izzzi