5种类型的参数传递机制: 1.pass按值 2.pass按引用 3.pass按值-结果 4.逐个文本(C中的宏) 5.通过名字(类似延续)
我只想要最后两个之间的区别。请帮助!!
参考:http://www.math.grin.edu/~rebelsky/Courses/CS302/99S/Outlines/outline.36.html
答案 0 :(得分:0)
call-by-text是函数参数在传递之前不进行求值的地方,然后替换参数的实例。参数作为“文本”传递,因此如果函数的局部边界在范围之外使用相同的变量名,则可能导致问题。
int i = 0;
void f(int j) {
print(j); // is replaced with print(i + 5) and prints 5
int i = 20;
print(j); // is replaced with print(i + 5) and prints 25
}
f(i + 5); // passes the unevaluated expression i + 5
按名称调用类似,因为函数参数在传递之前不会被计算,然后替换参数的实例。但是,参数绑定到thunk,它们作为调用函数范围内变量的闭包。
void f(int j) {
print(j); // prints 5
print(j); // prints 10
}
int i = 0;
f(i + 5); // passes the unevaluated expression i + 5
可在此处找到更多信息:http://www.cs.sjsu.edu/~pearce/modules/projects/Jedi/params/index.htm