为什么函数没有静态参数?

gho*_*der 1 c

以下是c中的代码.

     fact(2);
     void fact(static int i)
     {..}
Run Code Online (Sandbox Code Playgroud)

输出:错误不能有静态参数
那么为什么我们不能在函数中有静态参数?

小智 12

static关键字意味着变量在其范围内可能只有一个实例,并且该实例在其范围之外是不可见的.这些要求对于函数参数都没有意义:它可以被调用多次,在不同的内存地址,并且因为它用于通信,它必须对外部世界可见.

  • 为了让所有的愚人快乐,它可能导致参数被复制到在调用函数静态存储持续时间的对象,只是为了让功能无偿非线程安全的... ;-) (3认同)

Jer*_*fin 8

尝试应用于static参数没有多大意义,因此标准不允许它(§6.7.5.3/ 2:"在参数声明中应该出现的唯一存储类说明符是register.")

  • @pst:虽然你*可以*毫无疑问地将它定义为在该上下文中的某些东西,但我会说C还需要的最后一件事*另一个*含义附加到`static`. (5认同)