【问题标题】:Initialization for static variables静态变量的初始化
【发布时间】:2016-01-17 13:35:16
【问题描述】:
static int i = 5;
static int j = i;

int main()
{
    return 0;
}

我正在通过另一个在此之前声明的静态变量初始化静态变量,但我也得到了变量。请告诉我为什么这是错误的。

【问题讨论】:

  • 不能,static变量只能用常量值初始化。
  • C 只有一个非常严格的“常量”概念,不幸的是,您的用例不包括在内。
  • 你能解释一下你为什么想要这个吗?所以也许可以提供一个解决方案。
  • 如果您不想在代码中重复常量值,可以使用宏作为值,然后在两个初始化程序中使用宏。
  • @user9000 const 并不暗示该变量是常量

标签: c variables initialization static-variables


【解决方案1】:

你不能用i初始化j,因为在编译时,编译器不会知道i的值。要赋值j = i,代码需要在运行时执行。在 C 中初始化全局或静态时,编译器和链接器需要共同创建内存布局。编译器会给出值,而链接器需要给出变量的地址。 以下代码将起作用:

static int i = 5;
static int j;

int main()
{
    j=i;    
    return 0;
}

【讨论】:

    【解决方案2】:

    如果这是一个真实的案例,你也许应该显式地初始化它们。

    【讨论】:

      猜你喜欢
      • 2011-08-22
      • 2010-12-22
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多