0
雖然我的數組只有大小3,並且我已經爲每個元素指定了一個char,但仍然會自動添加NULL Terminator。是什麼導致在我的代碼中添加NULL Terminator?C - 爲什麼在將單個字符分配給數組時,會自動添加字符串終止符?
int main(void)
{
char s[3];
s[0] = 'f';
s[1] = 'o';
s[2] = 'o';
int i = 0;
while (s[i] != '\0')
printf("%c", s[i++]);
printf("\n");
if (s[i] == '\0')
printf("Null Terminator Added\n");
}
這只是一個不錯的行爲。在你的數組後面會出現一個0 *,但那只是運氣不好。 – 2014-11-22 19:21:29
「什麼導致NULL代碼被添加到我的代碼中」 - 很可能是'i = 0'(儘管我期望它們之間有1個字節的間隔)。如果你想驗證''i',你可以檢查'&i',但是一般情況下,編譯器會在's'之後立即分配'i'。這只是一個運氣問題,至於在你的函數被調用的地方(在你的具體例子中它是'main',所以你應該在每次執行時都會得到相同的結果)執行時的堆棧內容。 – 2014-11-22 19:27:55
如果你對C相對比較陌生,並且在數組和指針的工作方式方面存在問題,下面是一個幫助可視化差異的答案:http://stackoverflow.com/questions/27052988/what-is-the-difference-between -different-kinds-of-pointer-in-c/27054973#27054973 – technosaurus 2014-11-22 20:03:46