我使用" funcName 4"
调用此函数int main(int argc, char** argv) {
int numPassedIn = atoi(argv[1]);
printf("%d", numPassedIn);
pid_t kidPID[numPassedIn];
print语句打印" 4"。有道理。
然而,数组kidPID未正确初始化(声明?)。没有空间存放pid_t。
如果我改变代码来阅读
int main(int argc, char** argv) {
int numPassedIn = atoi(argv[1]);
printf("%d", numPassedIn);
pid_t kidPID[4];
它确实提供了空间。这里发生了什么?提前谢谢!
答案 0 :(得分:2)
C允许在运行时确定数组中元素的数量时声明可变长度数组(VLA)。
因此在此声明中
pid_t kidPID[numPassedIn];
声明了一个可变长度数组,其元素数等于变量numPassedIn
中存储的值。如果变量numPassedIn
的值等于4,那么这个声明实际上(有一些限制)等同于声明
pid_t kidPID[4];