关于C语言字符数组和字符指针
为什么程序1中的更改能够成功,程序2中的会报错呢?
程序1:
char* getMem(void)
{
char p[] = "Hello World";
*(p+1) ='a' ;
return p;
}
程序2:
char* getMem(void)
{
char *p = "Hello World";
*(p+1) ='a' ;
return p;
}
调用函数1是没问题的, 返回的p也能够正确赋值,请问你说的”p数组内容被别的函数冲掉“是什么情况?谢谢
追答可以试试:在返回p之后,你随便多调用几次printf输出字符串(这些printf会使用你的堆栈工作,它们的数据会冲掉你函数定义而后来被舍弃的数据),然后再用p来看是否有问题,这有个运气问题。