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的字串的時候都宣告...