如何在堆栈上创建一个int指针?

时间:2010-12-11 17:06:14

标签: c++

void func(int* param){};
func(&123); //error: '&' on constant
funct(&int(123)) //error

6 个答案:

答案 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;
}