C:当大小直到运行时才知道时如何初始化全局数组?
C: How do I initialize a global array when size is not known until runtime?
我正在用 C(不是 C99)编写一些代码,我想我需要几个全局数组。我从几个我还不知道大小的文本文件中获取数据,我需要存储这些值并以多种不同的方法提供它们。我已经编写了将文本文件读入数组的代码,但如果数组不是最佳选择,我相信我可以重写它。
如果你遇到这种情况,你会怎么做?我不一定需要代码示例,只是想法。
使用动态分配:
int* pData;
char* pData2;
int main() {
...
pData = malloc(count * sizeof *pData); // uninitialized
pData2 = calloc(count, sizeof *pData2); // zero-initialized
/* work on your arrays */
free(pData);
free(pData2);
...
}
首先,尝试理解需求。您不可能初始化 "unknown" 大小的内存,只有在拥有一定数量的内存(以字节为单位)后才能对其进行初始化。所以,首先要做的就是分配内存。
这是使用内存分配器函数 malloc()
和家族的场景,它允许您在 运行 时分配给定大小的内存。定义一个指针,然后在 运行 时获取内存大小并使用分配器函数分配所需大小的内存。
也就是说,
我正在用 C(不是 C99)编写一些代码,我想我需要几个全局数组。我从几个我还不知道大小的文本文件中获取数据,我需要存储这些值并以多种不同的方法提供它们。我已经编写了将文本文件读入数组的代码,但如果数组不是最佳选择,我相信我可以重写它。
如果你遇到这种情况,你会怎么做?我不一定需要代码示例,只是想法。
使用动态分配:
int* pData;
char* pData2;
int main() {
...
pData = malloc(count * sizeof *pData); // uninitialized
pData2 = calloc(count, sizeof *pData2); // zero-initialized
/* work on your arrays */
free(pData);
free(pData2);
...
}
首先,尝试理解需求。您不可能初始化 "unknown" 大小的内存,只有在拥有一定数量的内存(以字节为单位)后才能对其进行初始化。所以,首先要做的就是分配内存。
这是使用内存分配器函数 malloc()
和家族的场景,它允许您在 运行 时分配给定大小的内存。定义一个指针,然后在 运行 时获取内存大小并使用分配器函数分配所需大小的内存。
也就是说,