void func(int* param){};
func(&123); //error: '&' on constant
funct(&int(123)) //error
答案 0 :(得分:9)
这不是指针的工作方式。
您必须先为123分配内存,如下所示:
int x = 123;
func(&x);
答案 1 :(得分:4)
你不能拿一个临时的地址。地址 - 运算符(&
)需要lvalue
作为参数。
void func(int* param){};
int main(){
int k = 123;
func(&k); //fine now
}
答案 2 :(得分:2)
声明一个int变量,然后指向它:
int main() {
int x = 123;
func(&x);
}
如果要在堆栈上声明指针,则声明一个int-pointer变量:
int* p = &x;
func(p);
答案 3 :(得分:1)
关键字&
必须且应该只应用于实际变量,而不是操作数。
答案 4 :(得分:0)
问题是你正在尝试获取右值的地址。把它变成左值:
n = 123;
func(&n);
答案 5 :(得分:-1)
void func(int* param)
{
std::cout << * param << std::endl;
}
int main(int argc, char** argv)
{
int a = 123;
func(&a);
return 0;
}