【发布时间】:2012-01-02 17:28:35
【问题描述】:
让我们假设,
int *p;
int a = 100;
p = &a;
以下代码实际上会做什么以及如何做?
p++;
++p;
++*p;
++(*p);
++*(p);
*p++;
(*p)++;
*(p)++;
*++p;
*(++p);
我知道,这在编码方面有点乱,但我想知道当我们这样编码时会发生什么。
注意:假设a=5120300的地址,它存储在地址为3560200的指针p中。现在,每条语句执行后p & a 的值是多少?
【问题讨论】:
-
为什么不直接在调试器中运行呢?
-
好吧.. 为什么不干脆试试看看?
printf将打印一个带有 %p 的指针 -
如果你对行为感到好奇,就去玩弄它。只需编写一个简单的 c 程序来处理所有这些用例,看看它是否对您有意义。
-
@AndersK。也许OP期望未定义的行为? ...也许不是。