0

谁能告诉我为什么函数参数不能static?这就是函数参数被声明Stack并在函数返回时被释放的原因吗?有没有办法保留参数值?只是困惑。请澄清。

谢谢。

4

1 回答 1

0

该关键字static可能被视为有些“过载”。

以下使用选项都是可行的:

  • 静态局部变量
  • 静态全局变量
  • 静态成员变量
  • 静态全局函数
  • 静态成员函数

变量:

在运行时方面,所有类型的静态变量本质上是相同的。它们都驻留在程序的数据部分中,并且它们的地址在整个程序执行过程中保持不变。所以它们之间的唯一区别是在编译期间,在声明的范围内:

  • 静态局部变量:编译器只在函数范围内识别
  • 静态全局变量:编译器只在文件范围内识别
  • 静态成员变量:编译器只在类的范围内识别

职能:

在运行时方面,所有类型的函数(静态和非静态)本质上是相同的。它们都驻留在程序的代码段中,并且它们的地址在整个程序执行过程中保持不变。所以它们之间的唯一区别是在编译期间,在声明的范围内:

  • 静态全局函数:编译器只在文件范围内识别
  • 静态成员函数:编译器只在类的范围内识别

至于你的问题,参数被传递给堆栈中的一个函数。拥有它们没有任何意义static,因为这会有效地将它们放在数据部分中。如果它们位于数据部分,那么函数可以简单地从那里读取它们,而不是让它们在堆栈中传递给它。

于 2014-03-20T17:51:22.133 回答