[英]Is this End of Transmission character or something else?
所以我正在用標准C做一個字符串基礎教程。
我有:
char mystring[] = "HAL";
for (int i = 0; i < 3; i++)
mystring[i] += 1;
for (int k = 0; k < 10; k++)
printf("\n %d", mystring[k]);
哪個輸出:
73
66
77
0
4
0
0
0
0
0
現在mystring [3] = 0對我有意義,因為我讀到字符串文字以空字符結尾,所以字節數是n + 1個字符。 我不知道為什么mystring [4] = 4。 我在ascii表中看了4,它說它是“傳輸結束”。 我在C字符串的傳輸字符末尾做了一些快速谷歌搜索,但沒有找到任何東西。 那么有人會告訴我這里發生了什么事嗎? 這是標准的事嗎? 我什么時候能指望它發生?
訪問數組邊界之外是未定義的行為 。
一旦超過第一個\\ 0,C就不會定義緩沖區的內容。 基本上,你從上次使用內存區域獲得了內存中留下的任何內容,並且它在你的上下文中沒有任何意義。
該行分配4個字節的內存。 下面數組中的3加上看不見的字符串終結符'\\0'
char mystring[] = "HAL";
數組索引從0
,因此mystring[2]
為'L'
, mystring[3]
為'\\0'
。
進一步索引是未定義的行為,因此沒有人可以解釋你得到的值4
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.