如果我們聲明char * p="hello";
那麼既然它寫在數據段中,我們不能修改p點的內容,但是我們可以修改指針本身。但我發現在C陷阱與誤區 安德魯·柯尼希 這個例子AT & T貝爾實驗室 美利山,新澤西州07974c字符指針問題
的例子是
char *p, *q;
p = "xyz";
q = p;
q[1] = ’Y’;
q將指向包含字符串XYZ內存。所以p,因爲p和q指向相同的內存。
怎麼回事真的,如果我提到的第一條語句也是如此.. 同樣地,我跑到下面的代碼
main()
{
char *p="hai friends",*p1;
p1=p;
while(*p!='\0') ++*p++;
printf("%s %s",p,p1);
}
,並得到了輸出 ibj!gsjfoet
請解釋如何在這兩個我們是否可以修改內容? 在此先感謝
謹防陰暗面 – 2010-06-22 06:15:37
修改字符串字面導致不確定的行爲的內容,這意味着任何事情都可能發生的。 – 2010-06-22 06:21:01
我們需要多少字符串文字問題? – 2010-06-22 08:09:23