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

关于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条)

相关推荐 更多相似问题