我在 SO 上找到了一个答案,建议使用以下解决方案来重新初始化 c 中的数组。
int *foo = (int[]){1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)
我不确定这样的语法到底会做什么,我有几个问题:
如果我的数组是之前创建的,它会导致内存泄漏吗?
double *my_array = (double[]){1.1, 2.2, 3.3, 4.4, 5.5};
...
my_array = (double[]){-1.1, -2.2, -3.3}; // Do i need to call free(my_array) first?
Run Code Online (Sandbox Code Playgroud)
是否允许在函数调用中使用这种方法?
void foo(int *arr)
{
arr = (int[]){-2, -7, 1, 255};
}
int main()
{
int *my_array = (int[]){1, 2, 3};
foo(my_array);
if (my_array[2] != 1)
return -1;
}
Run Code Online (Sandbox Code Playgroud)
概括: