#include <iostream>
using namespace std;
void reference(int &ref){
cout << ref << endl;
}
void pointer(int *ref){
cout << *ref << endl;
}
int main(){
int *i = new int[1];
*i = 10;
reference(*i); // fine
reference(i); // why not compiling!!! why not referencing to my pointer??
pointer(i); // fine
}
我想引用一个指针,因为我可以看到我被允许引用值而不是指针,为什么?
答案 0 :(得分:1)
这一行
reference(i);
试图传入int *
- 而不是``int`变量。因此不会编译。
查看功能的签名
答案 1 :(得分:1)
int*
类型的对象无法自动转换为int&
。
我认为你正在寻找类似的东西:
void reference(int& ref){
cout << ref << endl;
}
void reference(int*& ref){
cout << *ref << endl;
}
然后,你可以使用两者:
int main(){
int *i = new int[1];
*i = 10;
reference(*i);
reference(i);
return 0;
}
答案 2 :(得分:1)
首先,“崩溃”这个术语只有在通过编译器后才能使用......
void reference(int &ref)
当您通过
传递指针时,此函数将引用整数作为其参数reference(i)
将您的功能签名更改为: -
void reference(int* &ref)
此通话工作。或者将调用更改为: -
int i;
reference(i);
让这个功能起作用。