我是想這樣的代碼:發現價值
int main()
{
char *ch="hello";
printf("%u",&ch);
return 0;
}
從上面的printf()
聲明我的CH IE地址65524
我的問題是我能找到的值,如果任何地址被賦予像*(65524)
,而不是*(&ch)
?
我是想這樣的代碼:發現價值
int main()
{
char *ch="hello";
printf("%u",&ch);
return 0;
}
從上面的printf()
聲明我的CH IE地址65524
我的問題是我能找到的值,如果任何地址被賦予像*(65524)
,而不是*(&ch)
?
是的,你可以:
printf("%d\n", *(unsigned char *) 65524);
如果地址不指向一個有效的對象,要調用未定義的行爲。
是不是'unsigned char'升級爲'unsigned int'? – 2013-07-06 10:14:28
不,它被提升爲'int' – ouah
感謝@ouah它的工作 –
順便說一下,上面打印**指針本身的地址**,而不是第一個字符的地址。而且你的格式說明符也是錯誤的。你使用'%p'打印指針(當打印時,指針需要轉換爲'void *')。 – 2013-07-06 10:15:24
@ H2CO3其實我也試過你的解決方案。首先,我使用*(無符號字符*)65524,並使用%p我嘗試像這樣*(無符號字符*)(oxFFF4)。兩者的輸出是一樣的。可以請你澄清兩者之間的差異嗎? –
我剛剛做到了。一個是保存第一個字符地址的指針地址。另一個是第一個字符本身的地址。 – 2013-07-06 10:33:13