【发布时间】:2019-02-10 03:19:46
【问题描述】:
int func(int a, int& b){
if (a < 3){
return b;
} else{
b++;
return func( a/10, b);
}
}
我认为这里的 b 是通过指针传递的,这与通过引用传递相同。什么是按地址传递,它与按引用传递有何不同?上面是否有任何变量是通过地址传递的?另外,为什么 func(40, 0) 给我一个错误作为输出?
【问题讨论】:
-
请仅提出 1 个问题。
-
指针传递和引用传递是一样的 可以有相似的结果,但相差甚远。
-
传递指针意味着有可能传递空指针(指向不存在对象的指针)。通过引用传递参数意味着被调用函数 - 以及编译器 - 可以安全地假设传递了一个有效对象 - 调用者无法在不引入未定义行为的情况下传递空引用(例如,通过取消引用空指针)。并且允许编译器在任何时间点假设以前没有未定义的行为。
标签: c++ parameter-passing pass-by-reference