编译没问题,运行时会被Windows终止,是不是指针本人用的不对,求高手指点迷津?
int main(void)
{
char *p=”hello”;
printf(” %s”,p);
*(p+2)=”a”;
printf(“%s”,p);
return 0;
}
int main(void)
{
char *p=”hello”;
printf(” %s”,p);
*(p+2)=”a”;
printf(“%s”,p);
return 0;
}
解决方案
20
你的p是指向常量的字符串,修改会导致出错
假如要修改,改成char p[]=”hello”; 这样是在栈上分配的,可修改
假如要修改,改成char p[]=”hello”; 这样是在栈上分配的,可修改
10
#pragma comment(linker,"/SECTION:.rdata,RW") //加这句可以让常量区可写,后果自负!
40
char *p=”hello”;表示指向常量区的常量字符串。
大部分编译器都不允许对该区域进行写操作。
改成在堆或栈上申请的字符串才行。
大部分编译器都不允许对该区域进行写操作。
改成在堆或栈上申请的字符串才行。