原文:http://www.blogbus.com/kavine-logs/29243638.htmlhtml
今天在編寫幾個小函數的時候,半天調不通,長久不使用C++知識都快忘光了,趕忙揀些起來應付即將到來的應聘。數組
void main()
{
char* pStr1 = "Hello!";
char pStr2[] = "Hello!";
change(pStr1);
change(pStr2);
}
void change(char* pInstr)
{
pInstr[0]='O';
}函數
兩種change編譯均可以經過,但發現第二個change是能夠正確地修改第一個字母爲'O',而第一個會操做失敗致使程序死掉。spa
基礎知識太差,木的辦法,查了查資料,兩種定義字符串的方法是有區別的。指針
字符串指針變量自己是一個變量,用於存放字符串的首地址。而字符串自己是存放在以該首地址爲首的一塊連續的內存空間中並以‘\0’做爲串的結束。字符數組是因爲若干個數組元素組成的,它可用來存放整個字符串。htm
第一種方法定義的字符串中的單個字符只能讀,不能修改,如cout<<pStr1[0]<<endl; 但不能作pStr1[0]='O';的操做。由於它被認爲是字符串常量,常量是沒法修改的。
而第二種方面定義的字符串是沒有這個限制的。blog