【发布时间】:2023-03-10 20:10:02
【问题描述】:
由于局部变量也称为自动变量,并且应该在运行时,当访问函数时分配内存。
int main(){
int a; // declaration
return 0;
}
int main(){
int a[]; // compilation error, array_size missing
return 0;
}
int main(){
int a[2]; // declaration, but can't work without array_size,
// so at compile time it is checked!
return 0;
}
我的问题是在 C 中声明 array_size 是否只是一个规则,还是在编译时为数组分配内存(仍然是局部变量)
它是如何工作的?
根据 K&R 的 C 编程,数组是一个变量。第 161 页。
【问题讨论】:
-
变量怎么可能在编译时分配?
-
@sgar91:该代码中没有任何静态数组。
-
@H2CO3 当然是编译器。我确定它会分配 plenty 的它们。哦..你的意思是在程序正在编译.. nm。 =P
-
@sgar91 这将是一个本地固定长度数组变量。
-
@linuxDeveloper 不。编译器在编译时发出指令,使程序在运行时分配内存。
标签: c variables memory-management local