2013-07-06 48 views
-1

我是想這樣的代碼:發現價值

int main() 
{ 
    char *ch="hello"; 
    printf("%u",&ch); 
    return 0; 
} 

從上面的printf()聲明我的CH IE地址65524
我的問題是我能找到的值,如果任何地址被賦予像*(65524),而不是*(&ch)

+5

順便說一下,上面打印**指針本身的地址**,而不是第一個字符的地址。而且你的格式說明符也是錯誤的。你使用'%p'打印指針(當打印時,指針需要轉換爲'void *')。 – 2013-07-06 10:15:24

+0

@ H2CO3其實我也試過你的解決方案。首先,我使用*(無符號字符*)65524,並使用%p我嘗試像這樣*(無符號字符*)(oxFFF4)。兩者的輸出是一樣的。可以請你澄清兩者之間的差異嗎? –

+0

我剛剛做到了。一個是保存第一個字符地址的指針地址。另一個是第一個字符本身的地址。 – 2013-07-06 10:33:13

回答

2

是的,你可以:

printf("%d\n", *(unsigned char *) 65524); 

如果地址不指向一個有效的對象,要調用未定義的行爲。

+0

是不是'unsigned char'升級爲'unsigned int'? – 2013-07-06 10:14:28

+3

不,它被提升爲'int' – ouah

+0

感謝@ouah它的工作 –