c - 为指向结构数组的指针动态分配内存

标签 c memory-management structure

你好我有这个结构

typedef struct STUDENT
{
    char studName[20];
    int timeEnter;
    int timeUpdate;
}STUDENT;

和指向结构数组的局部指针

STUDENT *studArr[100];

我正在尝试通过读取文件的第一行来为结构分配内存,然后使用它为结构分配内存。

fscanf(fp, "%s", &first);
**studArr = (STUDENT**) malloc(sizeof(STUDENT*)*first);

我收到一条错误消息,指出没有运算符“=”与分配行上的这些操作数匹配

为什么我会收到错误,我在这里做错了什么?

提前致谢

最佳答案

我觉得你把事情弄糊涂了,看起来你在声明一个指针数组,而你只需要一个指针。请注意,只要您的索引正确,指向“一个”struct 的指针就与指向一百的指针相同。

你应该有:

STUDENT *studArr;

然后,一旦您知道需要多少人(我假设 first 是要为其分配房间的学生人数):

studArr = malloc(first * sizeof *studArr);

另请注意 no casting is needed .

关于c - 为指向结构数组的指针动态分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16208311/

相关文章:

c - 将 unsigned long 数据类型写入二进制文件

c - 使用 write() 在 C 中写入文件时出现随机符号

c - 如何优化 "Find all possible triangles without duplicates"代码

c++11 - 内存池返回内存对齐

c++ - 关于手动内存管理和深度复制的新手问题

C结构初始化变量

c++ - C++结构数组的新顺序

c - 如何释放递归结构(trie)

OpenGL GPU内存清理,需要吗?

c - 根据用户输入从链表中删除节点