发布网友 发布时间:2022-04-25 20:44
共2个回答
热心网友 时间:2022-06-17 06:27
你这样定义struct stu *temp只是声明了一个指针,而且指针本身也是占空间的(在32位系统下为4个字节),内存为这个指针的存储分配了4个字节的存储空间。
而当你引用这个指针的时候,如果这个指针指向的位置未定义或者设置成了NULL,在进行例如temp->data等属性值获取的时候,因为这些属性未定义,这种操作是非法的。
综述一下,
1.
struct stu test;
struct stu *temp=test; //不需要temp=(stu *)malloc(sizeof(struct stu));
这时候可以直接temp->data之类等操作,因为在声明test的时候就已经分配了内存了
2.
struct stu *temp;
temp=(stu *)malloc(sizeof(struct stu)); //这种时候需要申请内存
热心网友 时间:2022-06-17 06:27
...要创建结构体变量的时候就是分配啊..不然的话只是定义了一个没有指向结构体变量的未知的指针追问这样写struct stu *temp应该给它分配内存,如果不要它进行链表的操作,就不需要给他重新分配空间吧?