C/C++ 函数内部修改形参

 我来答
户如乐9318
2022-07-17 · TA获得超过6593个赞
知道小有建树答主
回答量:2559
采纳率:100%
帮助的人:132万
展开全部

1)值传递----包括(数值传递,指针传递)

数值传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。
指针传递,就是传变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。

2)引用传递

引用传递,实际是通过指针来实现的,能达到使用的效果如传址,可是使用方式如传值。
说几点建议:如果传值的话,会生成新的对象,花费时间和空间,而在退出函数的时候,又会销毁该对象,花费时间和空间。

传入中GetMemory(char *p )函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完

后的str仍然为NULL;

你虽然将Test中的指针地址传过去了,char p确实也接受到了,但是:
p = (char
) malloc( 100 );这条语句中,malloc会返回一个新的地址,同时赋值给p,p已经不是原来的地址了。
此时,p是指向一块大小为100的空间。但是str还是指向NULL;

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式