C语言指针中*a+3和*(a+3)的区别?
答案:5 悬赏:0 手机版
解决时间 2021-02-10 04:27
- 提问者网友:暮烟疏雨之际
- 2021-02-09 22:18
C语言指针中*a+3和*(a+3)的区别?
最佳答案
- 五星知识达人网友:持酒劝斜阳
- 2021-02-09 23:13
*是取指针值,*a+3是取a这个地中存的值再加3。
*(a+3)是把a+3这个地址的值取出来。
如a[4]={1,2,4,8}
*a+3=a[0]+3=4,*a是取a的首地址值,就等于a[0]
*(a+3)=a[0+3]=a[3]=8
*(a+3)是把a+3这个地址的值取出来。
如a[4]={1,2,4,8}
*a+3=a[0]+3=4,*a是取a的首地址值,就等于a[0]
*(a+3)=a[0+3]=a[3]=8
全部回答
- 1楼网友:一叶十三刺
- 2021-02-10 01:46
问的是二维数组吧a[][]!
*a+3 :*a为指向第一行第一列,+3,表示列加三
*(a+3) : a表示指向第一行, +3表示行加三
- 2楼网友:老鼠爱大米
- 2021-02-10 00:55
这样给你说吧,如果你的a是一个int型数组,那么*a就值a[0]的值,*a+3=a[0]+3;而*(a+3)=a[3];
- 3楼网友:独行浪子会拥风
- 2021-02-09 23:42
如果 int *a 指向地址0x1234, 该地址存放的内容是:11,而0x1240地址上存放的内容是:22
那么:
*a+3 ==> 11+3 = 14
*(a+3) ==> (0x1234+c) ==> 22
- 4楼网友:行雁书
- 2021-02-09 23:33
这是操作符优先级的问题
*a+3,*的优先级比+高,所以这个表达式指针a指向的变量再+3;
*(a+3),()的优先级比*高,所以先计算里面的,也就是指针a指向的地址+3,值为地址,然后再算外面的*,提出变量,最后整个值就是a指针后面三个地址的变量的值,也就是a[3]
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯