-1
我的問題是爲什麼第二個printf顯示所有相同的地址,但第四個顯示不同的數字? 我在intel上編譯了gcc 4.8.2,在一些Linux發行版上編譯了64位。preincremented字符指針都增加後指向相同的地址?
首先2個pritfs應該打印的存儲器地址(不計算第一數量,其是在第一線int值。
第二和第三從發生在由指針FOM第一和第二printfs輸出給定的存儲器打印char值。
下面的代碼
#include<stdio.h>
int main()
{
char *ptr;
int numer;
numer = 0xAABBCCDD;
ptr=&numer;
printf("---\n%x\n %x %x %x %x\n",
numer,
(ptr),
(ptr++),
(ptr++),
(ptr++)
);
ptr=&numer;
printf("---\n%x\n %x %x %x %x\n",
numer,
(++ptr),
(++ptr),
(++ptr),
(ptr)
);
ptr=&numer;
printf("---\n%x\n %x %x %x %x\n",
numer,
*(ptr),
*(ptr++),
*(ptr++),
*(ptr++)
);
ptr=&numer;
printf("---\n%x\n %x %x %x %x\n",
numer,
*(++ptr),
*(++ptr),
*(++ptr),
*(ptr)
);
return 0;
}
生成輸出:
/a.out
---
aabbccdd
53209c77 53209c76 53209c75 53209c74
---
aabbccdd
53209c77 53209c77 53209c77 53209c77
---
aabbccdd
ffffffaa ffffffbb ffffffcc ffffffdd
---
aabbccdd
ffffffaa ffffffbb ffffffcc ffffffdd