Dan*_*iel 7 c arrays initialization
我有一个我想要创建全局的数组,我想在函数调用中初始化.我想首先声明它而不知道它的大小:
char str[];
Run Code Online (Sandbox Code Playgroud)
然后初始化它:
str = char[size];
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我对c很新,也许我在这里完全走错路,任何帮助都会非常感激.
做到这一点的方法是malloc.首先声明一个指针:
char *str;
Run Code Online (Sandbox Code Playgroud)
然后在init函数中你malloc:
str = malloc(sizeof(*str) * size_of_array);
Run Code Online (Sandbox Code Playgroud)
这将分配指向(在这种情况下)size_of_array的大小的元素.strchar
您应该检查分配是否失败:
if (str == NULL) {
// allocation failed
// handle the error
}
Run Code Online (Sandbox Code Playgroud)
通常情况下,你必须确保free在完成后分配内存.但是,在这种情况下str是全局的,因此它永远不会超出范围,并且free在程序结束时内存将为d.