2015-11-04 44 views
0
#include<stdio.h> 
int main() { 
    char str[]={'1','2','3'},*p; 
    p=str; 
    printf("%c",p); 
    return 0; 
} 

Output- @。指針的無法識別的行爲

不應該打印1或%c可能是原因?

+2

它將打印澆鑄'char'一個'str'地址的字符表示。而已。 –

+0

'p'指的是指針,即它的存儲器地址。你應該解引用它以得到它指向的內容:'* p' –

+0

好吧,如果我使用%s,那麼它將打印123右? –

回答

4

要打印一個指針(即1,如你所期望的)的值,你必須取消引用該指針。在你的情況,

printf("%c",p); 

應該

printf("%c", *p); 

FWIW,printf("%c",p);將調用未定義的行爲作爲提供的參數類型將是與所提供的格式說明不匹配。

2

p是一個指針。

你想printf("%c",*p);