【发布时间】:2021-03-08 18:59:33
【问题描述】:
我正在尝试在两个文件之间共享一个全局数组,如下所示:
main.c
#include <stdio.h>
#include "another.h"
int n=10;
int a[n];
void main(){
printf("Enter value:\n");
scanf("%d",&a[0]);
display();
}
另一个.h
#include <stdio.h>
extern int n;
extern int a[n];
void display(){
printf("%d",a[0]);
return;
}
但是,我收到以下错误: 在文件范围内可变地修改“a”
我无法理解为什么会出现此错误。请解释一下?
【问题讨论】:
-
全局可变长度数组在 C 中无效。另一种方法是将
n替换为#define MY_ARRAY_LEN 10 -
"没有办法在 C 中将可变长度数组声明为全局变量,因为它必须在知道它的大小之前分配,所以编译器无法知道它应该分配多少内存它”这就是您共享的链接所说的。但是,我在初始化数组之前将数组 n 的大小定义为 10,以便编译器确切知道要分配多少内存。所以即使这样它也行不通?