我有尺寸的字符數組512即char數組初始化爲' 0'會發生什麼?
char buffer [512];
之後的某一點,此變量被修改成這種
buffer [40] = '\0';
這是什麼任務確實給變量?它是否將數組中的前40個字符初始化爲null?
我有尺寸的字符數組512即char數組初始化爲' 0'會發生什麼?
char buffer [512];
之後的某一點,此變量被修改成這種
buffer [40] = '\0';
這是什麼任務確實給變量?它是否將數組中的前40個字符初始化爲null?
它只分配數組中的第41個字符到\0
。因此,現在字符串包括字符在數組的前40個元素中表示的內容,即0到39個索引(假設在任何以前的元素中沒有其他NUL
字符 - 感謝Kerrek SB !!)。
希望這有助於!
不。它將值NUL存儲在數組中的第41個位置。
到第40個字符初始化到NUL
memset(buffer, '\0', 40);
至Init,在編譯時整個緩衝區到NUL,嘗試
char buffer[512] = {0};
或
char buffer[512] = "";
要初始化它在運行時間,試試
memset(buffer, '\0', sizeof (buffer));
Mac是對的;位置41. – EvilTeach
它分配字符'\0'
(即, NUL
字符)到第41個數組元素。
那麼,在前40個字符「至多」。之前可能會有另一個零。 –
@KerrekSB:謝謝你的收穫!更新回覆 –
感謝KerrekSB和@ another.anon.coward - 非常有幫助的答案,所以現在緩衝區值被限制爲前40個字符(假設其間沒有其他空字符)。 –