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

2021-07-08 22:14:34 字數 2519 閱讀 1702

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樓:匿名使用者

完全可以。

不過這是字元陣列。

有關字串陣列越界的問題 請實踐一下,謝謝

因為你的陣列沒有存滿,用for迴圈結果就把陣列整個都輸出來了,包括裡面沒有存放資料的,當然會出現亂碼了。你應該在for迴圈加上一個判斷,比如說讀到 0 就退出什麼的,然後再所有資料結尾加上 0就行了。或是第一個用如下方法 for i 0 i 3 i 也不會越界 for i 0 i 3 i 直接這樣輸...

關於二維陣列指標的問題

其實這是c在實現多維陣列時的魔術而已,實際上a就是一個12個int的資料區。你在寫a 1 2 時編譯器實際上知道這個陣列一行是4個元素,所以計算它的地址為a 1 4 2,即a 1 2 就是 a 1 4 2 另一方面,編譯器允許使用形如a 1 這樣的表述,由於它知道a是一個定義為a 3 4 的陣列,所...

C,C 中關於char以及char陣列的問題

1.因為 iostream內部 cin cout 對char 做了特殊處理.因為c c 輸入輸出字串通常要用到char 如果直接輸出地址,就要用別的方法來輸出字串了 就不方便了.所以直接輸出地址 那裡放著的字串.3 sizeof hello 得到 字串實際長度 0 佔的一個位元組 一般用strlen...