c++ - 这个静态变量赋值给局部函数中的指针有什么问题?

标签 c++ c static

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/

相关文章:

c++ - 现在如何在 C++11 中编写 for 循环?

c++ - 如何获取具有可见窗口的任何进程的名称 - WinAPI?

c - 如何打印可打印字符和 '\n' 、 '\t' 等字符

c - 如何知道程序是否通过信号结束执行?

java - 如何在 java 静态方法中扩展数据结构以使其变得惰性?

c++ - MPI大数据处理

c++ - 使 Sublime Text 在 Mac 上使用 gcc4.8

C 编程 - 灵活数组成员的非静态初始化

c++ - 使用按位运算符和 bool 逻辑的绝对值 abs(x)

尝试在 java static 中打印矩阵值时出现 java.lang.NullPointerException