TangLMalan 2015-05-06 03:50 采纳率: 0%
浏览 2895
已采纳

关于C语言指针相加问题

代码:

include

main(){
int a , *p;
a = 3 ;
p = &a ;
int *q = p + 1;
printf("p is %d",p);
printf("q is %d",q);
printf("*q is %d",*q);

}
运行结果:

p is 2293308q is 2293312*q is 2293312

Process exited after 0.1425 seconds with return value 13
请按任意键继续. . .

我的理解是:变量P存储了指针a。而变量q是指针+指针,也就是说,变量q是加的是a地址后面的那个变量,至于这个变量值是多少,我不知道,可能是一个有效值,也可能是一个垃圾值,我在第三个输出的时候是*q。也就是说把这个有效值或者垃圾只输出,但是实际电脑运行的结果是地址,那么我的问题是:*运算符不是获取数据运算符吗?

  • 写回答

6条回答 默认 最新

  • threenewbee 2015-05-06 04:09
    关注

    修正下
    a p q的地址关系为 p=a+4 q=p+4(4就是一个整数的大小)
    p的值等于a的地址
    q的值等于p+1,也就是p的地址+sizeof(int)=p的地址+4,正好也是q的地址
    对q再取值,因为前面分析了,q的值就是q的地址,所以q的取值就是q

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办