getfoo(char** x);为什么呢用x返回参数呀????

ywchen2000 2006-08-10 07:36:05
getfoo(char** x);为什么呢用x返回参数呀????
...全文
170 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixingzhong 2006-08-11
  • 打赏
  • 举报
回复
这样可以加强对正确性的保证 ...
jixingzhong 2006-08-11
  • 打赏
  • 举报
回复
为什么不能呢?

x 本身是实参的一个副本,
和实参不是同一个实体 ...

而且就算是同一个实体,
只要类型正确,返回 x 也完全可以嘛 ...
ywchen2000 2006-08-11
  • 打赏
  • 举报
回复
学习呀。
happyzqj 2006-08-10
  • 打赏
  • 举报
回复
我怎么还是不太理解呢,感觉有点绕
Dong 2006-08-10
  • 打赏
  • 举报
回复
当然了,我是就题论题而已,最好还是使用指针的引用

getfoo(char*& x)
{
x = malloc(...);
}

char* str = ...
getfoo(str);
AdenPlus 2006-08-10
  • 打赏
  • 举报
回复
这种方法不太好,返回一个char* 比较好!
Dong 2006-08-10
  • 打赏
  • 举报
回复
情况一:
getfoo(char* x)
{
x = malloc(...);
}
假如函数是这样的getfoo(char* x);那么调用时使用
char* str = ....
getfoo(str);//里面对str指针进行操作,但不对指针指向的值进行操作,
这里str还是没有被改变到,为什么呢!因为char* str和getfoo(str)这两个str是不同地址的,
我们定义char* str,然后调用getfoo(str),其中getfoo(str)是新压栈的“变量”,是临时变量。我们修改了临时变量是对char* str没有影响的。

情况二:
getfoo(char** x)
{
*x = malloc(...);
}

但假如,我们定义getfoo(char** x),的话,我们再看看
char* str = ...

getfoo(&str);//引用字符串的地址。
我们只要对x指向的值进行操作,那么就相当于操作str的值了!

所以返回参数有这么的差别。参数要做为返回值就注意指针和值的变化!
Dong 2006-08-10
  • 打赏
  • 举报
回复
假如函数是这样的getfoo(char* x);那么调用时使用
char* str = ....
getfoo(str);//里面对str指针进行操作,但不对指针指向的值进行操作,
这里str还是没有被改变到,为什么呢!因为char* str和getfoo(str)这两个str是不同地址的,
我们定义char* str,然后调用getfoo(str),其中getfoo(str)是新压栈的“变量”,是临时变量。我们修改了临时变量是对char* str没有影响的。

但假如,我们定义getfoo(char** x),的话,我们再看看
char* str = ...

getfoo(&str);//引用字符串的地址。
我们只要对x指向的值进行操作,那么就相当于操作str的值了!

所以返回参数有这么的差别。参数要做为返回值就注意指针和值的变化!

64,662

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧