c - 如何初始化静态 C 数组?

标签 c static

假设我想在每次调用 f() 时做这样的事情来递增一个 int 数组:

void f()
{
  static int v[100]={1,2,3...100};
  for (int i=0; i<100; i++) v[i]++;
}

即我要:

first call f(): v[100]={1,2,3...100};
second call f(): v[100]={2,3,4...101};
...

显然以下不会这样做:

void f()
{
  static int v[100]; for (int i=0; i<100; i++) v[i]=i+1;
  for (int i=0; i<100; i++) v[i]++;
}

不确定如何实现它。谢谢!

最佳答案

在函数内部声明的static数组只能在其内部被引用,只要程序运行它就存在。它可以按照您在第一个版本中的提示进行初始化。

第二个版本首先用值填充数组,然后在每次调用函数时递增它们。大概不是你想要的。

要么将初始化和递增分成两个函数,在两者之外定义 static 数组,要么像您的第一个版本那样手动填充数组(甚至可以编写一个程序来生成初始化部分数组到一个文件中,然后将其复制到您的源代码中)。在这种情况下,数组的填充由编译器完成,没有运行时惩罚。

关于c - 如何初始化静态 C 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15170516/

相关文章:

java - 静态同步方法提供了类级别的锁定。类级别锁定是什么意思?

.net - 使用 .NET 和 OpenCV 进行线程化?

python - 包装 staticText 的 wxPython 问题

.net - 将委托(delegate)传递给静态类会导致泄漏吗?

c++ - 如何在代码块 (Windows) 的 C 项目中包含 curl 库?

c - 为什么这个非空终止字符串被正确打印

c - 二维数组是否需要事先知道它在 C 中的大小?

c++ - TreeView控件和非递归

c - 多个相同的 I2C 传感器与 vl53L0x API (ST Microelectronics)

c++类列表,无需初始化它们以使用静态函数