int* func(int *ptr)
{
static int a = 5;
ptr = &a;
return ptr;
}
有人在采访中问过我这个问题。现在的重点是,变量“a”是静态的,因此,与声明的普通变量不同,一旦函数返回,它就会失去它的值(从堆栈中弹出),这个变量保留它的值,因为它是静态的。
那我没看懂,这段代码有什么问题?
最佳答案
将 ptr
作为参数没有意义。不使用传递的值。您可以将其更改为
int* func()
{
static int a = 5;
return &a;
}
关于c++ - 这个静态变量赋值给局部函数中的指针有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17150785/