2013-12-17 33 views
-4

我看到這樣寫的一些代碼:字符數組的初始化和一些字符的字符串和C區別

char str[256] = {0}; 

char str[256] = {1}; 

當在前一種情況下,我用

printf("%s", str); 

什麼都不給,

這是否意味着將所有str [0]到str [256]全部賦值爲1?
當latterthe stdio給一個ASCII微笑字符。

此外,有什麼

char s[256] = {0}; 
printf("%c", s[1]); 

之間它使沒有什麼stdout


char s[256] = {0}; 
printf("%s", s[1]); 

它給一個(空)

我不明白,因爲我差c char數組和c指針的初學者。

+0

juanchopanza的回答是正確的,但還有其他一些事情要提及:整數值「0」與字符值「0」不一樣,這可能是您的意圖。 'printf(「%s」,...)'需要一個指向字符串的指針。在你得到「null」的情況下,你傳遞一個字符的值,它是0,因此被解釋爲一個空指針。如果你想從第二個字符('s [1]')開始打印字符串,你應該使用字符地址('printf(「%s」,&s [1])'') –

回答

2

這初始化所有256個字符來0

char str[256] = {0}; 

這一個初始化的第一個1,和所有其餘的0

char str[256] = {1}; 

關於的printf"%c"預期行爲單一的char。你通過它0,這是NUL(字符串終止),所以它不打印任何東西。 "%s"需要一個char*,第一個字符以nul結尾的字符串。您將它傳遞給一個值爲0char,它將其解釋爲空指針。

相關問題