静态变量和静态数组变量之间的差异

问题描述 投票:0回答:1

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

如果没有,您能否建议一种方法,通过该方法我可以使数组变量成为静态变量,以便它们可以在函数之间传递,并且像普通静态变量一样具有程序的生命周期?

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

c arrays variables static static-variables
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.