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

让我们假设


int *p;

int a = 100;

p = &a;

以下代码将实际执行什么操作以及如何执行?


p++;

++p;

++*p;

++(*p);

++*(p);

*p++;

(*p)++;

*(p)++;

*++p;

*(++p);

我知道,这在编码方面有点杂乱无章,但是我想知道当我们这样编码时实际会发生什么。


注意:假设的地址a=5120300存储在p地址为的指针中3560200。现在,p & a每条语句执行后的值是多少?


温温酱
浏览 697回答 3
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

慕仙森

关于“如何增加指针地址和指针的值?” 我认为这++(*p++);实际上是定义明确的,并且可以满足您的要求,例如:#include <stdio.h>int main() {&nbsp; int a = 100;&nbsp; int *p = &a;&nbsp; printf("%p\n",(void*)p);&nbsp; ++(*p++);&nbsp; printf("%p\n",(void*)p);&nbsp; printf("%d\n",a);&nbsp; return 0;}它不是在序列点之前两次修改同一件事。我认为对于大多数用途而言,这不是一个好风格-对我来说有点神秘。
打开App,查看更多内容
随时随地看视频慕课网APP