看板 C_and_CPP 關於我們 聯絡資訊
欲將字串傳入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
james732:置底十三戒第四 05/12 23:47
james732:簡單來說,szTest1指向的空間是「唯讀」的 05/12 23:48
loveme00835:http://goo.gl/IwpPK 參考 6.5.2.5 part 8, 13, 14、 05/13 03:10
loveme00835:6.7.8 part 32 因為那塊記憶體允許共用, 或是放在唯讀 05/13 03:11
loveme00835:區, 任何修改都無法保證會有相同行為, 關鍵字: string 05/13 03:12
loveme00835:literal 05/13 03:12