C语言结构体问题
structa{intd=100;inte=200;}c,*x;inta=0;a=x->d;提示“使用了未初始化的局部变量x”,为什么,怎么办?...
struct a
{
int d=100;
int e=200;
}c,*x;
int a=0;
a=x->d;
提示“使用了未初始化的局部变量x”,为什么,怎么办? 展开
{
int d=100;
int e=200;
}c,*x;
int a=0;
a=x->d;
提示“使用了未初始化的局部变量x”,为什么,怎么办? 展开
1个回答
展开全部
x是结构体指针,和其他指针一样语言初始化指向一个地址,
例如
int a=23,*pa;
pa=&a;(你的问题类似没有这句代码)
这里是一样的,你只是声明了x是指针,并没有指向任何结构体变量,那么x保存的地址是一个随机值,直接去访问这个值的内容,是危险的!
所以2种做法,一种你声明一个结构体用x指向它,比如 struct a test;
c=&test;这时候你用x-> 的效果就好像你直接访问test结构体。
另一种是用malloc函数分配一个结构体空间,用x指向它。可以参考malloc函数,格式很统一,都是那个格式。
最后,总结一下:只是声明一个类型的指针是不能直接用它的,必须让它指向这种类型的变量或者变量空间。
例如
int a=23,*pa;
pa=&a;(你的问题类似没有这句代码)
这里是一样的,你只是声明了x是指针,并没有指向任何结构体变量,那么x保存的地址是一个随机值,直接去访问这个值的内容,是危险的!
所以2种做法,一种你声明一个结构体用x指向它,比如 struct a test;
c=&test;这时候你用x-> 的效果就好像你直接访问test结构体。
另一种是用malloc函数分配一个结构体空间,用x指向它。可以参考malloc函数,格式很统一,都是那个格式。
最后,总结一下:只是声明一个类型的指针是不能直接用它的,必须让它指向这种类型的变量或者变量空间。
更多追问追答
追答
不是c是x打错了,见谅
追问
x=&a不允许使用类型名
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询