[問題] struct的字元陣列成員的值為何僅能用st …

看板C_and_CPP (C/C++)作者 (嘿嘿...)時間16年前 (2009/12/28 18:17), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 剛剛在看struct發現怎麼除了設定初始值和利用gets去給值外 其它都不行>"< 後來爬文有看到說用strcpy就解決,但我想知道為什麼? 感覺和char name[10]="AAAAA"; //一樣啊 struct data { char name[10]; }s1; s1.name="AAAAA"; //Error~ gets(s1.name); //Ok strcpy(s1.name,"AAAAA"); //OK 希望得到的正確結果: 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) 有問題的code: (請善用置底文標色功能) 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.192.122 ※ 編輯: althon 來自: 61.229.192.122 (12/28 18:17)

12/28 18:22, , 1F
char str[10]; str = "aaaa"; 也一樣會error啊~_~
12/28 18:22, 1F

12/28 18:22, , 2F
只有用在char str[10] = "aaaa"; 這種宣告同時初值化的
12/28 18:22, 2F

12/28 18:23, , 3F
時候才能這樣給值, 不然請用strcpy或一個一個assign:)
12/28 18:23, 3F

12/28 18:26, , 4F
謝謝v大..你講的我居然沒想到XD...
12/28 18:26, 4F

12/28 18:27, , 5F
但我還是想知道為什麼? 其它語言就沒這限制>"<
12/28 18:27, 5F

12/28 18:49, , 6F
因為 str 邏輯上是指向 10-byte 空間起點的不可變指標。
12/28 18:49, 6F
文章代碼(AID): #1BE8Msny (C_and_CPP)
文章代碼(AID): #1BE8Msny (C_and_CPP)