看板 C_and_CPP 關於我們 聯絡資訊
請問一下,我想宣告一個字串給陣列 下面的寫法,就過不了 char x[6]; x[6]="abcde"; 但是寫成這樣就可以 char x[6]="abcde"; 這是為什麼呢? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.1.29
tjjh89017:x[6]是指 x 的第7個元素(從1開始 06/01 20:56
tjjh89017:可是x只有6個元素當然會爆炸啊 06/01 20:57
tjjh89017:char x[6]="abcde"; 的6是陣列大小~ 06/01 20:57
diabloevagto:你陣列部份要從頭看過 06/01 21:07
diabloevagto:你大小給定6,能用的是0~5 06/01 21:07
Fan383:那請問我如果要宣告,跟給值分開的話,要如何寫呢 06/01 21:08
a23633302:char x[6]; x[0]="abcde"; ~~應該吧 06/01 21:09
Fan383:不行 我試過了 06/01 21:11
suhorng:重點完全不是array index out of range吧... 06/01 21:16
suhorng:要複製字串就用strcpy 06/01 21:17
TsinTa:只有宣告時可以直接給定字串,這算是規定吧@@" 06/02 08:09
rephansu:我覺得變數初始化的語法很容易誤導初學者... 06/02 08:52
tomnelson:要耍笨不用 strcpy 也可以: 06/02 11:01
tomnelson:char x[6]; 06/02 11:01
tomnelson:x[0]='a';x[1]='b';x[2]='c';x[3]='d';x[4]='e'; 06/02 11:02
tomnelson:x[5]='\0'; 06/02 11:02
tomnelson:注意最後的 "x[5]='\0';", 建議原po搞懂字元陣列與字串 06/02 11:03
tomnelson:的關係, 再來看程式就會比較明白為什麼要這樣寫! 06/02 11:04
prismwu:這個問題真熱門 06/02 16:25
rephansu:因為書的說明通常有看沒懂 06/02 19:14
johnhmj:陣列是以"指標"形式在跑的,宣告可以這樣設,但宣告之後… 06/02 23:54
johnhmj:必須每個元素逐一設值;陣列名稱"x"就是指標(指第一個元素 06/02 23:57