關於陣列越界問題 char s 5ABCDEchar s 5ABCDE

2021-07-08 22:14:33 字數 2519 閱讀 8207

1樓:匿名使用者

char s[5] = ;貌似等價於char s[5] = ;越界,char s[5] = ;沒有越界,不過輸錯字串的時候後面會多出一些你無法預料的東西。前一種賦值方法會自動在末尾新增'\0',後一種則要把'\0'寫進去

2樓:

我認為第一個有語法錯,第二個不越界。只不過字元陣列沒有以'\0'結尾,不能整體輸出(輸出可能出現亂碼),但可以一個元素一個元素的輸出。

//下面是測試程式。

#include

void main()

;for (int i=0;i<5;i++)printf("%c",s[i]);}

3樓:無憂網事

第一種情況,實際上是將一個字串常量"abcde"賦值給一個字串變數s,字串常量(變數)系統會預設加一個結束標誌'\0'。

4樓:倒黴熊

都沒有越界

這是正常的,只是都是最後缺少了 字串結束符'\0'而已。

一般情況下,你要自己想明白,定義的字串的長度,這樣你定義字串時要比其實際長度大1個,這樣可以防止出現問題。

char s[6] = ; //這個系統可以自動新增char s[6] = ; //這個需要自己手動新增。

5樓:匿名使用者

追問為什麼呢……#include

main();

puts(s);

}最後一位也是亂碼啊

你最後又用了一個puts(s);

如果你輸入的字串長小於5,就沒事,要是大於等於5,就又越界了。

因為puts()函式會在你輸入的字串後自動加一個“\0”作為結束符

6樓:匿名使用者

第一個越界了

“abcde”除字母外還有一個結束符\0

第二個不越界

7樓:匿名使用者

第一個越界

第二個沒有

第二個要用%c輸出

今天剛從課本上看到的

char s[5]="abcde"為什麼錯

8樓:匿名使用者

char s[5]="abcde"的時候後面的被認為是字串,所以會以‘\0’結尾佔一個字元,共6個字元;但是你char s[5]=;每個字母是一個字元,也就是5個字元

9樓:匿名使用者

char s[6] = "abcde";試試

10樓:清

........      改char s[6]="abcde";  可以?

char s[5]={'a','b','c','d','e'} 這個字元陣列這樣初始化可以嗎?

11樓:匿名使用者

這個需要來

看情況的。

如果陣列只是字源符的bai

話,這樣就是對的du。輸入輸出都是用zhi%c,一個一個的處理。

char s[5]=;

如果陣列dao是字串的話,那就是錯誤的,輸入輸出需要用%s來處理,字串要用\0結束。

char s[6]=;

12樓:那不是冬瓜

可以的,你又不是把字串賦給它。

13樓:聽海的聲音

不行 應該是s[6]

c語言求解char s[5]=""這種雙引號裡面啥都不寫是什麼意思

14樓:匿名使用者

字元陣列初始

char s=;

s陣列自動初始化為帶五個個元素的陣列

char s="abcde";

s為帶5個元素,共佔6個位元組(包括了字元結束符'\0')char s[5]=""這種雙引號裡面啥都不寫是初始化為空陣列

15樓:匿名使用者

char s[5]=""  初始化為空字元

char s[5]="abcde"   s為字元陣列,並不是因為出界出錯,對宣告的字元指標賦值可以這麼寫

下列對字元陣列s的初始化不正確的是( c )。 a.char s[5]="abc"; b.c

16樓:

字串以'\0'結束,總長為6。

17樓:樂觀的

我正準備學,等我學會了再來回答你

char s[5]={'a','b','c','d','e'};可以這樣對字元進行賦值嗎?

18樓:匿名使用者

可以。這是一個字元陣列,不是字元。

19樓:匿名使用者

可以,但是你忘了加'\0'了

最好是s[6]=;

\0即返回的意思

20樓:匿名使用者

完全可以。

不過這是字元陣列。

關於字元陣列的問題,一個關於字元陣列的問題

不是你輸入5個數時才出錯,而應該在你輸入第2個數時就出錯。你輸入到第5個才出錯是你的運氣好。因為你只定義了包含1個元素的陣列,卻要向裡輸送多個數字,除第1個有地方儲存並受 控制外,其他的雖然依次存入其後的單元,但並不受你的 控制,系統會隨時安排別的資料佔據這些隨後的單元。你輸入到第5個數時出錯,就是...

c語言初級問題關於陣列

你陣列定義大小為a 5 5 但是他的下標是0開始 到4 最大為4 也就是說 你a i 5 相當於是越界了 理論上是錯誤的 不過你的編譯器沒報錯 但是二維陣列在記憶體中其實是連續的一串記憶體 也就是a 0 五個單位a 1 五個單位類推 正確的應當是 include void main float a ...

C 關於char陣列的問題,關於C char型別陣列長度的問題

可為什麼下標引用超出定義沒有錯誤 因為宣告char陣列的時候,b只是被宣告為指向char陣列第一個地址的指標。用操作符取資料的時候,編譯器看成是首地址向後偏移 char型別的長度 序號 超過了界限之後,至於後邊取到什麼意外資料就不一定了。所以一般需要使用char陣列儲存一個長度為n的字串的時候都宣告...