C语言:哪些是值传递哪些是地址传递?

这个是用指针做参数的,我觉得这个是地址传递呀,为什么不能返回?... 这个是用指针做参数的,我觉得这个是地址传递呀,为什么不能返回? 展开
 我来答
月下忆娇娘
2014-06-25 · TA获得超过326个赞
知道小有建树答主
回答量:442
采纳率:100%
帮助的人:353万
展开全部
C语言没有真正意义的地址传递,即使传递指针也只是传递的指针的值,
比如这里加入b 的地址是0x ffff;
实际上在point 函数内是产生了另一个名为p的指针, p 指向0x ffff ( 这个p 只是和main函数的p值相同而已,不是同一个。所以传递指针其实是传递的地址的值,还是值传递)
因此p + 3 不会影响main 函数的p, 如果要改变main的p, 必须:
Point(char** p)
{
*p += 3;

}
调用:
*p = b;
Point(&p);
总之,改变指针的值用二级指针(更高一级的指针,即该指针的地址)。
zjfaok
2014-06-25 · TA获得超过6806个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1603万
展开全部
地址传递本质上还是值传递

地址传递的一个约定是:如果形参叫p,函数体内只能用*p不能直接用p。否则没有预期的效果。所以这里算不上地址传递
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
修魔go
2014-06-25 · TA获得超过119个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:112万
展开全部
你传递的是地址,被调函数中,你已经找到人家门,可以布置了一番,但你什么都没做,就回来了,亲,你想返回什么?
而且返回到主调函数中时,主调函数中的p并没有变化,,所以输出的是a,,有什么不对吗,,,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0b71ac0
2014-06-25 · 超过23用户采纳过TA的回答
知道答主
回答量:60
采纳率:100%
帮助的人:33.5万
展开全部
指针也是一个变量。在作为函数参数的时候也是把副本传进去,所以,对原指针的值(一个地址)是没有影响的,但可以改变指向的值。在涉及到指针作为参数的时候,要用指向指针的指针或者引用去解决。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liang_jw_ljw
2014-06-25 · TA获得超过120个赞
知道小有建树答主
回答量:198
采纳率:100%
帮助的人:127万
展开全部
char * p 就是地址传递
*p=b 就是值传递
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式