2015-06-14 145 views
-2

運行此代碼後會發生什麼?C++指針字符

char* c= "abc"; 
    void* p= &c; 
    printf("%s %s", *(char**) p, *(char*) p); 

所以c指向字符串和p太。但我沒有得到所有*真正做到的。 有人可以解釋我嗎?

+0

編譯器錯誤,這就是發生了什麼。 –

+0

@DanielKamilKozar [不是真的](http://ideone.com/Hmt3Ev) –

+0

@πάνταῥεῖ - 好的,那麼警告。 :) –

回答

0

printf行中的第二個參數會導致該問題,因爲它會將p的內容解釋爲字符串,而不是指向字符串的指針。 printf行可能是:

printf("%s %c", *(char**)p, *c);