[問題] 陣列 = 字串, 編譯不會過

看板C_and_CPP作者 (Fan)時間11年前 (2013/06/01 20:52), 編輯推噓2(2020)
留言22則, 10人參與, 最新討論串1/1
請問一下,我想宣告一個字串給陣列 下面的寫法,就過不了 char x[6]; x[6]="abcde"; 但是寫成這樣就可以 char x[6]="abcde"; 這是為什麼呢? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.1.29

06/01 20:56, , 1F
x[6]是指 x 的第7個元素(從1開始
06/01 20:56, 1F

06/01 20:57, , 2F
可是x只有6個元素當然會爆炸啊
06/01 20:57, 2F

06/01 20:57, , 3F
char x[6]="abcde"; 的6是陣列大小~
06/01 20:57, 3F

06/01 21:07, , 4F
你陣列部份要從頭看過
06/01 21:07, 4F

06/01 21:07, , 5F
你大小給定6,能用的是0~5
06/01 21:07, 5F

06/01 21:08, , 6F
那請問我如果要宣告,跟給值分開的話,要如何寫呢
06/01 21:08, 6F

06/01 21:09, , 7F
char x[6]; x[0]="abcde"; ~~應該吧
06/01 21:09, 7F

06/01 21:11, , 8F
不行 我試過了
06/01 21:11, 8F

06/01 21:16, , 9F
重點完全不是array index out of range吧...
06/01 21:16, 9F

06/01 21:17, , 10F
要複製字串就用strcpy
06/01 21:17, 10F

06/02 08:09, , 11F
只有宣告時可以直接給定字串,這算是規定吧@@"
06/02 08:09, 11F

06/02 08:52, , 12F
我覺得變數初始化的語法很容易誤導初學者...
06/02 08:52, 12F

06/02 11:01, , 13F
要耍笨不用 strcpy 也可以:
06/02 11:01, 13F

06/02 11:01, , 14F
char x[6];
06/02 11:01, 14F

06/02 11:02, , 15F
x[0]='a';x[1]='b';x[2]='c';x[3]='d';x[4]='e';
06/02 11:02, 15F

06/02 11:02, , 16F
x[5]='\0';
06/02 11:02, 16F

06/02 11:03, , 17F
注意最後的 "x[5]='\0';", 建議原po搞懂字元陣列與字串
06/02 11:03, 17F

06/02 11:04, , 18F
的關係, 再來看程式就會比較明白為什麼要這樣寫!
06/02 11:04, 18F

06/02 16:25, , 19F
這個問題真熱門
06/02 16:25, 19F

06/02 19:14, , 20F
因為書的說明通常有看沒懂
06/02 19:14, 20F

06/02 23:54, , 21F
陣列是以"指標"形式在跑的,宣告可以這樣設,但宣告之後…
06/02 23:54, 21F

06/02 23:57, , 22F
必須每個元素逐一設值;陣列名稱"x"就是指標(指第一個元素
06/02 23:57, 22F
文章代碼(AID): #1HgUwPzW (C_and_CPP)