静态变量和静态数组变量的区别
Difference between static variables and static array variables
我只是想知道关键字“static”在数组变量和普通变量上使用时是否具有相同的含义?例如,我知道静态变量一旦声明就具有程序的生命周期,而静态数组意味着数组的大小无法更改。
但是,我想澄清一下,静态数组变量是否也具有程序的生命周期,并且不会在定义它们的函数中一遍又一遍地初始化,即使该函数被多次调用?或者关于数组的关键字“static”是否只限制数组的大小?
如果不是,能否请您建议一种方法,通过该方法我可以将数组变量设为静态,以便它们可以在函数之间传递,并且还像普通静态变量一样具有程序的生命周期?
我目前使用的是C语言。如果这是一个有点愚蠢的问题,请耐心等待,我对编程很陌生。
谢谢!!
在块作用域或文件作用域声明为 static
的变量具有静态存储持续时间并与程序的生命周期相匹配。这对于数组和非数组同样适用。
无论如何都不能改变数组的大小。声明中指定的大小是数组在其生命周期内的大小。
如果您是在谈论函数参数中数组声明符方括号内的关键字 static
(例如 void f(int x[static 2]);
),那么这是完全不同的事情(相同的关键字已被重复使用用于不相关的目的),这意味着可以优化该函数,就好像它仅使用至少该大小的数组调用一样。
我只是想知道关键字“static”在数组变量和普通变量上使用时是否具有相同的含义?例如,我知道静态变量一旦声明就具有程序的生命周期,而静态数组意味着数组的大小无法更改。 但是,我想澄清一下,静态数组变量是否也具有程序的生命周期,并且不会在定义它们的函数中一遍又一遍地初始化,即使该函数被多次调用?或者关于数组的关键字“static”是否只限制数组的大小?
如果不是,能否请您建议一种方法,通过该方法我可以将数组变量设为静态,以便它们可以在函数之间传递,并且还像普通静态变量一样具有程序的生命周期?
我目前使用的是C语言。如果这是一个有点愚蠢的问题,请耐心等待,我对编程很陌生。 谢谢!!
在块作用域或文件作用域声明为 static
的变量具有静态存储持续时间并与程序的生命周期相匹配。这对于数组和非数组同样适用。
无论如何都不能改变数组的大小。声明中指定的大小是数组在其生命周期内的大小。
如果您是在谈论函数参数中数组声明符方括号内的关键字 static
(例如 void f(int x[static 2]);
),那么这是完全不同的事情(相同的关键字已被重复使用用于不相关的目的),这意味着可以优化该函数,就好像它仅使用至少该大小的数组调用一样。