int * foo(int a)在c ++中返回什么

时间:2017-04-22 17:20:36

标签: c++ data-structures

int* foo(int a)
{
    int b = 5;
    int c = a+b;
    return &c;
}

我知道这是一个可怕的代码,但我不明白这里的错误。什么是int * foo()应该返回什么& c意味着什么?

3 个答案:

答案 0 :(得分:3)

&c - c的地址。 foo返回指向此局部变量的指针 - c

这很糟糕,不应该这样做 - 因为c将超出范围 - 因此其地址无效

答案 1 :(得分:0)

在此上下文中,

&是一元运算符,它返回变量的地址。 &c是变量c的地址。

int * foo()返回一个地址,更准确地说是整数变量的地址(c);

但是,返回局部变量的地址永远不会好,因为它的地址无效!

答案 2 :(得分:0)

int *foo(int a)是foo的函数签名,告诉我们参数是一个整数,foo 返回一个指向整数的指针。

&c是对内存位置的引用,其中存储了整数c。

因此,您的函数返回一个指向存储c的内存地址的指针。

修改:如上所述,由于c的范围是函数foo(),因此地址无效且foo不会返回任何使用内容