【发布时间】:2017-11-10 08:59:15
【问题描述】:
嘿,我对 C 编程相当陌生,我正在尝试理解指针和地址并运行此代码,我得到了输出: v = 3003 '一个内存地址' *p = 3003
我理解最后两个,但有人可以帮助解释为什么 v = 3003?我最初的理解是它会导致 3002,所以我理解寻址和指针行 'p = &v' 在其中发挥了作用,但我不明白如何。任何解释将不胜感激谢谢!
#include <stdio.h>
int main() {
int v = 0x3002;
int* p = 0x3000;
p = &v;
(*p)++;
printf("v = %x\n", v);
printf("%x\n", p);
printf("*p = %x\n", *p);
}
【问题讨论】:
-
p 指向 v。你增加 p 指向的地方,所以你增加 v。所以 v 是 3003。
-
您的预期和实际输出是多少?请edit您的问题并在此处明确说明。
-
(*p)++;是此处v++的另一种说法。简而言之,您正在做v=v+1。对指针进行一些研究。 -
它说?我的实际输出是 3003,但预期输出是 3002?
-
printf("%x\n", p);-->printf("%p\n", (void*)p);