2
让我们假设这个代码:通过参考参数传递给函数C++
void function(double &f){
// doing w/e here
}
然后在主功能:
float v;
function(&v);
我的编译器说,这是不正确的,买我不真的不明白为什么。
关于同一主题:
void function(float *&f){
// doing w/e here
}
然后在主功能:
float *v;
function(v+5);
这也是不正确出于某种原因,我没有得到任何。
所以我的问题是:为什么这些电话不正确?
特别注意 - 即使你用'double'替换float,指向double的指针也不是对double的引用。实际上,这些都是紧密相关的概念 - 一个引用也被称为自解引用指针 - 但C++将它们视为具有不同行为的不同类型。要为参数指定一个指针类型,可以使用'double * f'而不是'double&f'。要传递引用,不需要运算符转换为引用,只需使用'function(v)'。 – Steve314
思考它的一种方法 - 如果你使用'&'作为操作符,它会给你一个指针。如果在一个类型中使用'&',它会在后台使用一个指针,但是您并不直接处理指针。 – Steve314