C语言 字符串常量 指针
最近在看C,写了以下测试程序char *p="string";
void main()
{
*(p+3) = '\0';
while(1);
}
一开始我认为编译是无法通过的,因为这里试图去修改一个字符串常量中的值。
在VC6.0中编译通过file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/765350744/QQ/WinTemp/RichOle/%NRQKQQ4@WHT2W6TD2`NV3C.jpg
但是无法运行
file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/765350744/QQ/WinTemp/RichOle/Z@T{BXVAZ{NV94]ED824EUB.jpg
在TC2.0中编译通过
file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/765350744/QQ/WinTemp/RichOle/[{
并且可以正常运行
file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/765350744/QQ/WinTemp/RichOle/@10_TL_X76O9A6M6CCVR$
不明白为什么会是这样的结果,请高手指点,谢谢!
你想多了,改的是存储器的值 比如avr下面gcc把字符串放内存的,就可以改。tc也许放代码段再拷贝过来的。正确做法是用const char*
页:
[1]