结构体指针不能直接对结构体元素进行赋值么

#include<stdio.h>
struct wa
{
struct {
char a;
char b;
int c;
}*h;
int d;
};

int main()
{
struct wa *p;
p->d=1;
printf("%d",p->d);

}
\\这样为什么会报错啊,为什么不能这样直接赋值,

p没有指向有效内存,是野指针,试图访问p的域将会导致程序崩溃。
struct wa *p = (struct wa*)malloc(sizeof(struct wa)); //分配内存给指针p
p->d=1;追问

谢谢啊,我之前也在想,是不是内存问题

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-05-02
你只申请了一个指针,未分配内存,请问你的数据存哪?可以在struct wa *p后加一句p=(struct wa *)malloc(sizeof(struct wa));这样就可以了。头文件要包涵stdlib.h
相似回答