*(p+2)='a';这种赋值能否可行

C语言 码拜 8年前 (2016-09-20) 829次浏览
编译没问题,运行时会被Windows终止,是不是指针本人用的不对,求高手指点迷津?
int main(void)
{
char *p=”hello”;
printf(” %s”,p);
*(p+2)=”a”;
printf(“%s”,p);
return 0;
}
解决方案

20

你的p是指向常量的字符串,修改会导致出错
假如要修改,改成char p[]=”hello”;  这样是在栈上分配的,可修改

10

#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!

40

char *p=”hello”;表示指向常量区的常量字符串。
大部分编译器都不允许对该区域进行写操作。
改成在堆或栈上申请的字符串才行。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明*(p+2)='a';这种赋值能否可行
喜欢 (0)
[1034331897@qq.com]
分享 (0)