社区
C语言
帖子详情
C里面的值传递和地址传递有什么区别?
hoofi
2002-11-17 09:44:10
如果不对形参本身操作,上面两种方式传递有什么不一样么?
两种传递在那些用法上面有不一样的地方?
...全文
307
14
打赏
收藏
C里面的值传递和地址传递有什么区别?
如果不对形参本身操作,上面两种方式传递有什么不一样么? 两种传递在那些用法上面有不一样的地方?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
一闻
2002-11-18
打赏
举报
回复
1、这个问题的实质其实很清晰,传递的时候,系统都把参数拷贝一份然后传递给函数,无论是值传递或者地址传递。
2、所以,在函数中改变参数的值,就相当于在改变实参数的拷贝(地址也一样)的值。
3、对于指针,指针拷贝的那份和原来的那份所"指向的变量"都是一样的,比如: &b 指向 b,拷贝一份后(&b2 = &b),那么&b2也指向b,所以改变*&b2,也就是改变b的值,但直接改变&b2,却并不会改变&b,也就是不会改变b的地址!
以上是我学了指针一年后才有的真正了解。
hxy_sss
2002-11-18
打赏
举报
回复
值传递实际上是值拷贝。
地址传递与上面差不多。
wuyixy1
2002-11-18
打赏
举报
回复
在函数行参中,如果用的是值传递,这时如果要把修改以后的值传到函数外面,必须用return语句。如果用的是地址传递,则在函数中对其修改就直接对于该存储单元进行修改,修改就对函数外同样有效。
hoofi
2002-11-18
打赏
举报
回复
估计这种鸟问题不需要深究!
ddmpqcw
2002-11-18
打赏
举报
回复
void foo1(X v){
...;
}
foo1采用值传递,它的运行机制:
X x;
foo1(x);
被转换为:
X x;
X _temp_v.X::X(x);
foo1(_temp_v);
其中_temp_v.X::X(x);//包含一个copy constructor 的调用操作,这是关键,差别主要体现在这里,如果X的结构比较复杂的话,这样做就不好。
你可以使用 foo1(X&x)来代替。它的效率和使用传址是一样的!
Raser
2002-11-18
打赏
举报
回复
据说地址传递效率比较高
qhgary
2002-11-18
打赏
举报
回复
地址传递其实也是copy了一份,直传递也copy了一份,只是一个copy的是value,一个copy的是address。没有什么区别。只是由于copy的是address,所以在使用的时候一旦改变其所指的内容,跟着就都变,给分。
970361
2002-11-18
打赏
举报
回复
foo(char *p)
{
p++;
p++ ;
}
main()
{
char *p = "hello world" ;
char *p1 = p ;
foo(p1) ;
printf("%s",p1);
}
shanweibing
2002-11-17
打赏
举报
回复
值传递只能返回一个值,而地址传递则不同。
iamxia
2002-11-17
打赏
举报
回复
如果传递的是大内容,比如大的结构等建议用地址
dximg
2002-11-17
打赏
举报
回复
c 语言只有值传递,无地址传递!
所谓的地址也只是一个值,并不能
改变其本身,只能改变其指向的
内容。
zjw2723114
2002-11-17
打赏
举报
回复
性能上,大不一样
ice119103
2002-11-17
打赏
举报
回复
因为条用函数的返回值是单向的,所以要用传值改变参数的值,用传值就不可以
iamxia
2002-11-17
打赏
举报
回复
如果不对形参本身操作,没什么不同,只是方法而已
C语言函数调用.docx
c语言
Javascript中引用类型
传递
的知识点小结
JS
里面
哪些类型是引用类型? Object类型都是引用类型.(function,array,date,regexp..) JS哪些类型是
值
传递
? 基本类型都是
值
传递
.
值
传递
就是重新copy一个副本进行
传递
. 如何把值类型的变量以引用类型的方式进行
传递
? 通过把基础类型包装之后可以以引用类型
传递
. ECMAScript提供了三个特殊的引用类型(基本包装类型): Boolean,String,Number. 引用类型与基本包装类型的
区别
: 对象的生存期不同. 见代码: var str = hello js; var str2 = str.substring(2,5); // str2
c语言中的
值
传递
和
地址
传递
参数,c语言
值
传递
,
地址
传递
,引用
传递
c语言
值
传递
,
地址
传递
,引用
传递
总结:对于函数来说,
值
传递
就是一个人来了,给你一些数据,你对数据处理。
地址
传递
就是你通过
地址
找到一个人,然后直接对这个人处理。而引用
传递
就是你要直接对一个人进行处理,通过名字对人访问,但你不知道那个人叫什么,就先起个随便的名字。谁来了,他的别名就是这个名字。但通过这个别名对人处理有一些限制,相比
地址
对人全权操作安全。另一段别人的解释:
值
传递
、
地址
传递
、引用
传递
的区...
c语言 函数
传递
方式:
值
传递
和
地址
传递
值
传递
是一种在函数调用中将实际参数的值复制给形式参数的方式,函数内部对形式参数的修改不会影响到实际参数的值。(说实话,我也看不懂)
地址
传递
是一种在函数调用过程中,将实际参数的
地址
传递
给形式参数的方式,函数可以通过形式参数的引用或指针来直接访问和修改实际参数所在内存位置上的值。这种方式可以在函数内部对实际参数进行修改,使得修改在函数调用结束后仍然有效。
C语言
值
传递
和
地址
传递
值
传递
这种方式使用变量、常量、数组元素作为函数参数,实际是将实参的值复制到形参相应的存储单元中,即形参和实参分别占用不同的存储单元,这种
传递
方式称为“参数的
值
传递
”或者“函数的传值调用”。
值
传递
的特点是单向
传递
,即主调函数调用时给形参分配存储单元,把实参的
值
传递
给形参,在调用结束后,形参的存储单元被释放,而形参值的任何变化都不会影响到实参的值,实参的存储单元仍保留并维持数值不变。 来看下面一个调用示例: #include <stdio.h> /* 变量x、y为Swap函数的形式参数 */ v
C语言
70,037
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章