c - C 中的全局变量数组

标签 c arrays global-variables

我正在尝试创建一个全局数组,其大小由运行时的外部参数文件决定。

我看过其他关于此的问题并尝试过:

int const Nt=1280;
double *Array = NULL;
Array = malloc(Nt * Nt * sizeof(double));

但是,我收到如下错误:

错误:数组类型冲突

错误:初始化元素不是常量

如何创建这样一个全局数组,而无需在每次需要更改其大小时都重新编译?

最佳答案

在全局范围内不允许赋值。您必须改为在函数中执行此操作。

int const Nt = 1280;
double *Array = NULL;

假设以上 2 个语句在全局范围内。它们是初始化的例子,因为语句在声明本身赋值。这在全局范围内是允许的,初始化器可以是常量值、字符串文字或此时可访问的其他变量。

const int Nt ; // Just declaration
Nt =  1280 ;   // Error. Assignment is not allowed at global scope.

const char* myName = "CHP" ;
int a[] = { 11,22,33,44,55 } ;

同样,在您的示例中,Array 只是一个声明。在函数中进行赋值。

void assignArray() {

    Array = malloc(Nt * Nt * sizeof(double));

    // ...

    printf("%d", sizeof(Array)/sizeof(Array[0]); // Size which is nothing but Nt*Nt
                                                 // 0 to (Nt * Nt) - 1
}

关于段错误,发布更多代码。

关于c - C 中的全局变量数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7294974/

相关文章:

arrays - 当我用 Swift 制作表格时,数组为空

c++ - 如何引用与 C++ 中的局部变量同名的全局变量?

javascript - 在 Javascript 中获取变量的名称和字符串

linux - shell脚本中的全局变量?

c - 关于 signal() 函数的奇怪 'SIGSEGV' 性能

c++ - 是否可以创建一个 C++ 程序,只链接到 libcs​​tdc++,而不链接到 libc?

javascript - 需要修改代码以排除数组中存在的所有值

c - C 中的 Rand() 函数用于随机 ASCII - 字符(仅限字母和数字)

c++ - 检测文件描述符何时来自/proc

python - 如何使用 numpy 配对 (x,y) 对