我正在通過「Learn C」書閱讀,並且遇到了一個我真不明白的問題。在練習的要點是找到這段代碼的問題:基本C指針問題
char c;
c = 'a';
printf("c holds the character %c.",c);
..和那麼它給出的解釋是:「文本字符串‘a’是由兩個字符,這兩個‘A’和終止零字節變量c只有一個字節的大小,即使c是2字節長,也不能以這種方式拷貝一個文本字符串,嘗試一次拷貝一個字節的文本到足夠大的變量中該文本字符串及其終止的零字節。「
但是,當我運行上面的代碼 - 它工作得很好。我想我明白爲什麼的背後它是壞的理論 - 將整體在一串東西年底終止0,所以我改寫這樣的代碼進行測試:
char c[2];
*c = 'a';
printf("c holds the character %c.",c);
但是,這產生一個問題。我開始對這個問題感到困惑。這第二組代碼是不是將字母'a'傳遞給c [0]處的指針,然後將終止0置於c [1] - 完全使用分配給該數組的2個空格?
我不假設在第二行有一個雙引號? (c =「a」;)這將無法編譯...因爲單引號是一個字符,而任何用雙引號是一個字符串(所以以null結尾) – Rudu 2010-08-31 21:16:05
你的第一個例子是100%正確的,沒有問題用它。你確定你把它正確地複製了嗎? – 2010-08-31 21:16:23
謝謝你們,你是對的 - 書中的例子有雙引號。但他們沒有提到答案中指出的一點,即雙引號是空字符結束的,單引號只是一個字符。謝謝。 – startuprob 2010-08-31 21:28:04