在 5 种类型的参数传递机制中: 1.pass-by-value 2.pass-by-reference 3.pass-by-value-result 4.pass-by-text(C 中的宏) 5.pass-by-名称(类似于延续)
我只想要最后两个之间的区别。请帮忙!
参考: http: //www.math.grin.edu/~rebelsky/Courses/CS302/99S/Outlines/outline.36.html
在 5 种类型的参数传递机制中: 1.pass-by-value 2.pass-by-reference 3.pass-by-value-result 4.pass-by-text(C 中的宏) 5.pass-by-名称(类似于延续)
我只想要最后两个之间的区别。请帮忙!
参考: http: //www.math.grin.edu/~rebelsky/Courses/CS302/99S/Outlines/outline.36.html
文本调用是指函数参数在传递之前不进行评估,然后替换参数的实例。参数是“作为文本”传递的,因此如果函数的本地边界在范围外使用相同的变量名,可能会导致问题。
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