为了账号安全,请及时绑定邮箱和手机立即绑定

如何增加指针地址和指针的值?

如何增加指针地址和指针的值?

C
温温酱 2019-12-07 15:45:23
让我们假设int *p;int a = 100;p = &a;以下代码将实际执行什么操作以及如何执行?p++;++p;++*p;++(*p);++*(p);*p++;(*p)++;*(p)++;*++p;*(++p);我知道,这在编码方面有点杂乱无章,但是我想知道当我们这样编码时实际会发生什么。注意:假设的地址a=5120300存储在p地址为的指针中3560200。现在,p & a每条语句执行后的值是多少?
查看完整描述

3 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

检查了程序,结果是,


p++;    // use it then move to next int position

++p;    // move to next int and then use it

++*p;   // increments the value by 1 then use it 

++(*p); // increments the value by 1 then use it

++*(p); // increments the value by 1 then use it

*p++;   // use the value of p then moves to next position

(*p)++; // use the value of p then increment the value

*(p)++; // use the value of p then moves to next position

*++p;   // moves to the next int location then use that value

*(++p); // moves to next location then use that value


查看完整回答
反对 回复 2019-12-07
?
慕仙森

TA贡献1827条经验 获得超7个赞

关于“如何增加指针地址和指针的值?” 我认为这++(*p++);实际上是定义明确的,并且可以满足您的要求,例如:


#include <stdio.h>


int main() {

  int a = 100;

  int *p = &a;

  printf("%p\n",(void*)p);

  ++(*p++);

  printf("%p\n",(void*)p);

  printf("%d\n",a);

  return 0;

}

它不是在序列点之前两次修改同一件事。我认为对于大多数用途而言,这不是一个好风格-对我来说有点神秘。

查看完整回答
反对 回复 2019-12-07
  • 3 回答
  • 0 关注
  • 696 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信