静态变量的初始化
Initialization for static variables
static int i = 5;
static int j = i;
int main()
{
return 0;
}
我正在用之前声明的另一个静态变量初始化静态变量,但我也在获取变量。请告诉我为什么这是错误的。
不能用i
初始化j
,因为在编译时,编译器不知道i
的值。要赋值j = i
,代码需要在 运行 时间执行。在 C 中初始化全局或静态时,编译器和链接器需要共同创建内存布局。编译器会给出值,链接器需要给出变量的地址。
以下代码将起作用:
static int i = 5;
static int j;
int main()
{
j=i;
return 0;
}
如果这是真实情况,您也许应该显式初始化它们。
static int i = 5;
static int j = i;
int main()
{
return 0;
}
我正在用之前声明的另一个静态变量初始化静态变量,但我也在获取变量。请告诉我为什么这是错误的。
不能用i
初始化j
,因为在编译时,编译器不知道i
的值。要赋值j = i
,代码需要在 运行 时间执行。在 C 中初始化全局或静态时,编译器和链接器需要共同创建内存布局。编译器会给出值,链接器需要给出变量的地址。
以下代码将起作用:
static int i = 5;
static int j;
int main()
{
j=i;
return 0;
}
如果这是真实情况,您也许应该显式初始化它们。