[問題] 指標與陣列

看板C_and_CPP作者 (rosemary0401)時間13年前 (2011/05/12 23:45), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/3 (看更多)
欲將字串傳入foo,並改變字串的值,程式如下: #include <iostream> using namespace std; void foo(char *szTest) { char *p; for(p = szTest; *p != '\0'; p++) { *p = 'A'; } } void main() { char* szTest1 = "test"; char szTest2[5] = "test"; //Error //foo(szTest1); //OK foo(szTest2); cout << szTest2 << endl; cin.get(); } 為什麼傳入szTest1會出錯,但是傳入szTest2是OK的呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.148.121

05/12 23:47, , 1F
置底十三戒第四
05/12 23:47, 1F

05/12 23:48, , 2F
簡單來說,szTest1指向的空間是「唯讀」的
05/12 23:48, 2F

05/13 03:10, , 3F
http://goo.gl/IwpPK 參考 6.5.2.5 part 8, 13, 14、
05/13 03:10, 3F

05/13 03:11, , 4F
6.7.8 part 32 因為那塊記憶體允許共用, 或是放在唯讀
05/13 03:11, 4F

05/13 03:12, , 5F
區, 任何修改都無法保證會有相同行為, 關鍵字: string
05/13 03:12, 5F

05/13 03:12, , 6F
literal
05/13 03:12, 6F
文章代碼(AID): #1Dp027Sy (C_and_CPP)
文章代碼(AID): #1Dp027Sy (C_and_CPP)