作者rosemary0401 (rosemary0401)
看板C_and_CPP
標題[問題] 指標與陣列
時間Thu May 12 23:45:09 2011
欲將字串傳入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:6.7.8 part 32 因為那塊記憶體允許共用, 或是放在唯讀 05/13 03:11
→ loveme00835:區, 任何修改都無法保證會有相同行為, 關鍵字: string 05/13 03:12
→ loveme00835:literal 05/13 03:12