int* foo(int a)
{
int b = 5;
int c = a+b;
return &c;
}
我知道这是一个可怕的代码,但我不明白这里的错误。什么是int * foo()应该返回什么& c意味着什么?
答案 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不会返回任何使用内容