永发信息网

C++中char*问题

答案:6  悬赏:0  手机版
解决时间 2021-01-29 03:14
void kk(char* dest)
{
dest="aa";
}
void main()
{
char* dest="bb";
kk(dest);
cout<}
为什么输出的是bb呢?要想输出aa,函数原型不变,应该怎么写呢?
最佳答案
void kk(char* dest)中,dest作为字符一个指针是形参,通过调用它不可能达到改变传入的指针的值,而只能改变其指向的内容的值。
因此函数原型不变,是没办法实现所述要求的。
全部回答
将kk(dest); 写为kk(bb); 就行了。将char* dest="bb";去掉。
这个是因为函数调用只能传递数据给给形参,就相当是你所给参数的一份copy,如果要修改就要传递地址过去。 如下 void kk(char** dest) { *dest="aa"; } void main() { char* dest="bb"; kk(&dest); cout<
  • 3楼网友:何以畏孤独
  • 2021-01-28 08:20
原因是函数kk中修改的是局部指针dest的值,而主函数中dest指针的值并没有改变。 只要修改一处即可: 将void kk(char* dest)改为void kk(char* &dest)
  • 4楼网友:忘川信使
  • 2021-01-28 07:49
这个问题就是函数方面的问题了。参数作为函数的一部分,在函数被调用时,整个代码存入栈中,函数调用后栈释放掉。参数作为函数的一部分也存放在临时栈中。那么当函数结束是,这个参数随着栈释放而消失了。 想实现的话,就将这个变量或指针的地址带进去: void kk(char **dest) { *dest="aa"; } kk(&dest); 就可以了
  • 5楼网友:孤独入客枕
  • 2021-01-28 06:26
将dest设为全局变量吧 否则在子函数中的dest 和主函数中的dest是不同的 机子只认在main中定义的dest 所以输出是aa
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯