首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

修改指针常量指向的内容出错,咋回事情

2012-02-21 
修改指针常量指向的内容出错,怎么回事情?intmain(intargc,char*argv[]){char*constpc asdf *pc b *(

修改指针常量指向的内容出错,怎么回事情?
int   main(int   argc,   char*   argv[])
{
char   *   const   pc= "asdf ";
*   pc   = 'b ';
*(pc+1)= 'c ';
cout < <pc < <endl;
return   0;
}

编译通过,生成.exe文件,
执行文件时候发生错误:
ooptest.exe   遇到问题需要关闭。我们对此引起的不便表示抱歉。

注释掉*   pc   = 'b ';
*(pc+1)= 'c ';
就没事了。
请问是怎么回事情?

[解决办法]

char ar[] = "asdf ";

char * const pc = ar;

这样吧

[解决办法]
你没有分配内存,对吧。
那你这个指针指向哪里呢?其实指向的是常量区,这一段是受操作系统保护的。
所以如果你分配了内存,不管是在堆上或在函数栈上都没有问题。
见Chiyer(星羽)的回答。

热点排行