注册 登录
编程论坛 C++教室

请问 调用函数时参数的传递在内存中是怎么回事 是怎样的过程

cout_1987 发布于 2007-10-29 10:47, 1292 次点击

请问 函数调用 参数的传递过程究竟是怎么一回事 在内存中怎样呢 按值、按指针都能看得懂,只是那个按引用传递不明白啊
比方说吧按值传递就是把值传到另一个变量里,按指针传就是把地址做些手脚,可这个按引用实在是不明白啊 帮忙解释解释在内存中的具体过程,也许我就明白了 多谢了

[此贴子已经被作者于2007-10-29 11:13:55编辑过]

8 回复
#2
cout_19872007-10-29 10:48
比方说这样一段
int swap(int &a,int &b){
.....
.....
}
void main (){
int val1,val2;
........
........
swap(val1,val2);
........
}
是把val1,val2传递到了哪里吗? 究竟传递过程在内存中是怎么回事
#3
cout_19872007-10-29 11:00
就是在内存中  是怎么个过程  具体些  多谢啦
#4
cout_19872007-11-01 18:30

诸位帮帮忙吧 解释一下

#5
otacon2007-11-01 20:42
我们的老师说 在有些编译器里
“引用”其实就是用“指针”实现的
#6
csmenglei9512007-11-01 21:36
&是取地址符号,那段函数形参是a,b.实参是val1,val2.
如果是int swap(int &a,int &b)就是把val1,val2的地址赋值给变量a,b这样swap函数对a,b的操作就是对val1,val2地址操作,val1,和val2会发生变化.如果是int swap(int a,int b),对a,b的操作是对val1,val2的值直接操作.变量val1,val2不变化
#7
aipb20072007-11-01 22:43

参数传递 2 种,值传和引用

传值:你想成把 实参(调用函数时你写在参数表括号里的)复制一次,被复制的进入函数运算,所以与 实参 没关系

引用:没有复制,直接把它用在函数里做运算

LZ说的按指针,其实也是分这两种的,没有加&符号,就是值传,那么指针就会被复制。

#8
yuyunliuhen2007-11-01 22:49
值传递的时候,在函数调用期间系统复制了一个同样类型的值过去,函数调用后,变量的生存期就结束了; 引用传递的时候,函数调用期间压到栈中的是变量的地址,函数中对引用变量的更改都会影响到变量本身的值,调用完成释放也是引用变量的地址,与原变量没关系.传递引用效率高点。
#9
孤魂居士2007-11-02 09:03

先申请内存 调用完函数后释放内存 顶楼上yuyunliuhen的

1