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”,为什么,怎么办?
展开
 我来答
君知126
2018-02-10 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:98
采纳率:80%
帮助的人:20.8万
展开全部
x是结构体指针,和其他指针一样语言初始化指向一个地址,
例如
int a=23,*pa;
pa=&a;(你的问题类似没有这句代码)
这里是一样的,你只是声明了x是指针,并没有指向任何结构体变量,那么x保存的地址是一个随机值,直接去访问这个值的内容,是危险的!
所以2种做法,一种你声明一个结构体用x指向它,比如 struct a test;
c=&test;这时候你用x-> 的效果就好像你直接访问test结构体。
另一种是用malloc函数分配一个结构体空间,用x指向它。可以参考malloc函数,格式很统一,都是那个格式。
最后,总结一下:只是声明一个类型的指针是不能直接用它的,必须让它指向这种类型的变量或者变量空间。
更多追问追答
追答
不是c是x打错了,见谅
追问
x=&a不允许使用类型名
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式