C语言 尝试将内存错误定位到单独声明的指针变量时出错



>我通过以下方式声明了一个字符指针:

School *student[10];
for(i=0;i<10;i++){
    *student[i] = malloc(sizeof(Student));   <--- Error points here
}

我得到的错误是:

incompatible types when assigning to type 'struct Student' from type 'void*'

有谁知道为什么我会收到此错误?

但是,如果我在同一行中分配内存,为什么它会与星星在同一行中分配内存。例如:Student *name = malloc(sizeof(Student));为什么会这样?我有点困惑

*student[i] = malloc(sizeof(School));应该student[i] = malloc(sizeof(School));

students 是指向类型 School 的结构的指针数组。因此,您需要为该数组中的每个指针分配。当您编写*student[i]时 - 您正在取消引用指针i而不是为其分配内存。

正如尼古拉斯·米亚里(NicolasMiari)指出的那样,sizeof运营商必须向School而不是student申请。

但是,如果我在同一行中分配内存,为什么它会与星星在同一行中分配内存。例如:学生 *姓名 = malloc(sizeof(学生));为什么会这样?我有点困惑

那不一样。当你写Student *name = malloc(sizeof(Student));时,你既声明了一个指针,又malloc初始化它。您可以像这样在一行中执行这两个步骤。或者,您先声明它,然后在另一行中分配malloc - 在这种情况下,您必须删除星号。

您可能希望参考此问题指针初始化和指针分配。

相关内容

  • 没有找到相关文章

最新更新