[英]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.