c语言指针问题,有一些疑惑。 比如已经定义了以下, int a; int *q=NULL; a=

c语言指针问题,有一些疑惑。比如已经定义了以下,inta;int*q=NULL;a=10;疑问是1.q=a;2.q=&a;3.*q=a;4.*q=&a;解释下这四种写法什... c语言指针问题,有一些疑惑。
比如已经定义了以下,

int a;
int *q=NULL;
a=10;

疑问是
1.q=a;
2.q=&a;
3.*q=a;
4.*q=&a;

解释下这四种写法什么意思,我完全弄混淆了
展开
 我来答
百度网友f89327a
2015-03-06 · TA获得超过150个赞
知道小有建树答主
回答量:232
采纳率:0%
帮助的人:176万
展开全部
1 是错误的,不能将 int 赋值给 int *
2 是正确的,因为 &a 的类型为 int *,正是 q 的类型;
3 理论上正确,实际中不妥,因为 q 指向受保护内存区,此时对 q 解引用并赋值,程序会崩掉;
4 是错误的,道理和 3 同理;
追问
为什么书上可以在定义时初始 int *p=a还是  int *p=&a;
追答
这种问题,你上机实践一下就知道了;
在这里讨论只能是纸上谈兵;
xoaxa
推荐于2017-09-26 · TA获得超过8605个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3374万
展开全部
1.q = a; // 类型不同,会给出编译警告
2.q = &a;// 指针p指向a的存储地址,正常用法
3.*q = a;// 有问题,a的值放哪儿呢?
4.*q = &a;// 有问题,a的地址放哪儿呢?
更多追问追答
追问
有些书上写的q=a
还有的是定义时*p=a还是*p=&a
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式