静态变量和静态数组变量之间的区别

时间:2020-04-02 02:09:50

标签: c arrays variables static static-variables

我只是想知道关键字“ static”在用于数组变量和普通变量时是否具有相同的含义?例如,我知道静态变量一旦声明便具有程序的生命周期,而静态数组意味着无法更改数组的大小。 但是,我想澄清一下静态数组变量是否也具有程序的生命周期,并且即使在多次调用该函数的情况下,也不会在定义它们的函数中反复进行初始化?还是针对数组的关键字“静态”仅对数组的大小设置了限制?

如果否,您能否建议一种方法,使数组变量成为静态变量,以便可以在函数之间传递它们,并使程序寿命像普通静态变量一样?

我当前正在使用C语言。如果这是一个愚蠢的问题,请多多包涵,我对于编程非常陌生。 谢谢!!

1 个答案:

答案 0 :(得分:1)

在块范围内声明为static或在文件范围内声明的变量具有静态存储持续时间,并且与程序的生存期匹配。对于数组和非数组同样如此。

在任何情况下都不能更改数组的大小。声明中指定的大小是数组生命周期的大小。

如果您是在函数参数(例如static)的数组声明符的方括号内谈论关键字void f(int x[static 2]);,那么这是完全不同的事情(相同的关键字已被重新用于无关的关键字)目的),这意味着可以对函数进行优化,就好像仅使用至少具有该大小的数组调用函数一样。