c语言字符指针问题
void fun1(){
char * msg= "zhangsan";
fun2(msg);
cout<<msg<<endl;
}
void fun2(char * msg){
msg = "lisi";
cout<<msg<<endl;
}
在fun1中,调用fun2后,请问为什么msg还是"zhangsan"而不是"lisi"?
如果想通过fun2修改msg的值,该如何改?
谢谢!
[解决办法]
msg指向的是常量不可修改
[解决办法]
++
#include <iostream>using namespace std;void fun2(char * msg){ msg = "lisi"; cout<<msg<<endl;}void fun1(){ char * msg= "zhangsan"; fun2(msg); cout<<msg<<endl;}int main(){ fun1(); return 0;}
[解决办法]
"zhangsan","lisi"都是常量
fun2只能改变msg的内容,不能改变msg的地址
[解决办法]
#include <iostream>using namespace std;void fun2(char **msg);void fun1(){ char * msg= "zhangsan"; fun2(&msg); cout<<msg<<endl;}void fun2(char **msg){ *msg = "lisi"; cout<<msg<<endl;}int main(void){ fun1(); }
[解决办法]
void fun1()
{
char msg[256];
strcpy(msg,"zhangsan");
fun2(msg);
cout<<msg<<endl;
}
void fun2(char *msg)
{
strcpy(msg,"lisi");
cout<<msg<<endl;
}
[解决办法]
6楼正解
[解决办法]
形参和实参的问题,在调用fun2(char*msg)时,系统是先穿参数,建了临时指针变量_msg=msg;在fun2函数体内改变的是_msg的值,员msg值不变
[解决办法]