【问题标题】:Difference between static variables and static array variables静态变量和静态数组变量的区别
【发布时间】:2020-07-13 22:19:24
【问题描述】:

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

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

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

【问题讨论】:

  • 这将有助于显示您所询问的代码示例
  • static 对于所有数据类型具有相同的含义。不清楚你为什么会这样想。
  • @user207421 好吧..你能澄清一下我们是否可以像普通数组一样在函数之间传递静态数组吗??
  • @Aditi 同样,真正的问题是您为什么会这么想?这里真正的问题是什么?
  • 您是否真的尝试过您所询问的任何事情?这比浪费一天在这里发布问题并得到可能不正确的答案,或者根本没有答案要高效得多。

标签: c arrays variables static static-variables


【解决方案1】:

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

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

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

【讨论】:

  • 好吧!!太感谢了 !!这真的很有用,真的很有帮助!!! :)
猜你喜欢
  • 1970-01-01
  • 2016-07-26
  • 2012-05-14
  • 2010-09-25
  • 2021-04-20
  • 2011-01-14
  • 2014-02-07
  • 1970-01-01
相关资源
最近更新 更多