簡體   English   中英

無法理解C中字符串和循環的這種意外行為

[英]Couldn't Understand this unexpected behavior of string and loop in C

這是我的C程序及其輸出的屏幕快照,這是我遇到的一本書中的問題。

在此處輸入圖片說明

如您所見,我的代碼中存在一個“ for”循環。 所以我所做的是,我更改了循環初始化的值

for(i=6;s1[i]!='\0';i++);

現在輸出再次

矩陣大小6

我一次又一次地更改了初始化值,然后將輸出值“ i”如下

初始化|||| (i)的輸出值

6-> 6

7-> 11

8-> 11

9-> 11

10-> 11

11-> 11

12-> 20

我的問題

為什么每當我將loop的初始化值>輸入的字符串的大小(即本例中的“矩陣”)放置時,為什么我的i =循環的初始化值?

因為6之后的所有char-array元素都應該為null,不是嗎?

因為6之后的所有char-array元素都應該為null,不是嗎?

不,它們不必為\\0 他們可以擁有任何價值。 您只需要循環,直到找到下一個恰好存在的0 當您實例化內置類型的自動存儲陣列時,如下所示:

char s[20];

沒有對元素執行初始化。 它們具有不確定的價值。 讀取它們甚至是未定義的行為。 您可以像這樣強制元素的零初始化:

char s[20] = {};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM