永发信息网

C语言指针(不很难)

答案:3  悬赏:10  手机版
解决时间 2021-04-27 10:49

#include<stdio.h>
void main()
{
   int a=2,*p=&a,*q=&a;    (*p在取值?&a代表的是a变量的地址,*p代表p变量所对应的值<目前还没>,这能等吗?)
   printf("%d  %d\n",*p++,*(q++));q++已经被括起来了啊,为什么取值还是只去变量p对应的值?)
   p=&a;q=&a;                          (存值?)
   printf("%d  %d\n",*p,(*q)++);
}


2  2     这里是运算结果。
3  2

最佳答案
1.int *p=&a 这句的意思是定义一个指向a的指针变量。此时的* 是【类型说明符】表明其后的变量是指针变量,而不是运算时的【针变量所指的变量】。只要a在*p之前已经定义完成,那么a的地址就已经确定,所以int a=2,*p=&a;当然正确。
2.printf("%d",*(q++)代表先输出q所指向的a的值,然后q再加1,注意是q加1,而不是*q即a加1,所以*p的值还是2.然后再输出*p,再p加上1.   此时a的值还是2,只是p,q所指向的变量已不是a了。
3.p=&a,就是把a的地址赋给指针变量p
4.printf从右往左运算,首先执行(*q)++,即先输出a,然后a加1,(注意此时括起来的是*q),所以第二个为2.。然后输出*p,p指向a,a此时为3,所以第一个输出为3
全部回答

指针是按你下面一种形式为标准定义的。地址和值挂钩了。

上面一种方法是地址,地址改变不影响值。所以操作后对于你printf("%d  %d\n",*p,(*q)++);没有值的影响

小山羊是对的,你再看看书。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
世界上最大的峡谷是什么?
战地之王下完了进不去怎么回事
汇鑫小吃这个地址在什么地方,我要处理点事
军训的时候来月经怎么办?
魔域里请问下我打PK得了个第3名?
单簧管高手 来此帮我~
ERP的基本知识 都有哪些?
怎么我一洗点蓝拳的意念驱动就没了
滁州市哪个县经济最好,漳州哪个县的经济比较
我的脸形上面是方的下面是尖的适合什么发型
女婿是什么玩意
湘味人家土菜馆球场路店我想知道这个在什么地
游戏人生中的丝路英雄拥有八座城是什么意思
5元包500分钟的V网业务天津哪有办的?
表达想男朋友了的句子,兄弟喝酒开心的句子
推荐资讯
关闭IE时报错,IE报错,怎么解决?
树脂镜片磨花了怎么办,树脂镜片磨花了怎么办
青春韩国电影百度云
为什么我的电脑老爱中病毒呢还老开机慢
完美国际好玩吗?什么职业不郁闷
什么算得上世界之最
怎么不沉默,变得活跃一点?
楼房停水时为什么有时打开水龙头会往回抽气?
DNF中60级魔神7件天空套,带+10流星,+10风衣
无聊出个问题
很久之前的电影,求电影名
赞美柳州的紫荆花诗句,柳州赏紫荆花有感作文
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?