Arrays 如何在C中初始化后将列表分配给数组
我调用一个函数来更改C中的数组,比如Arrays 如何在C中初始化后将列表分配给数组,arrays,c,Arrays,C,我调用一个函数来更改C中的数组,比如 int array[3] = {a, b, c} 到 但是,这给了我一个错误。是否有另一种方法可以像我在初始化时使用C中的大括号那样一次性分配一组值?您可以像这样重新分配此数组的内存(C++): 在纯C中,应该使用malloc和free而不是new和delete 或者,如果你不想完全破坏你的第一组对象,就不要调用delete,只要用new重新分配内存,你就不能在C语言中将一个数组分配给另一个数组。没有什么理由解释为什么,这只是语言的设计方式 一些备选方案:
int array[3] = {a, b, c}
到
但是,这给了我一个错误。是否有另一种方法可以像我在初始化时使用C中的大括号那样一次性分配一组值?您可以像这样重新分配此数组的内存(C++): 在纯C中,应该使用
malloc
和free
而不是new
和delete
或者,如果你不想完全破坏你的第一组对象,就不要调用delete,只要用new重新分配内存,你就不能在C语言中将一个数组分配给另一个数组。没有什么理由解释为什么,这只是语言的设计方式 一些备选方案:
wrapperstruct
typedef struct { int array [3]; } arr_t; ... arr_t arr = {a,b,c}; arr_t arr2 = {d,e,f}; arr = arr2;
memcpy
int arr[3] = {a,b,c}; int arr2[3] = {d,e,f}; memcpy(arr, arr2, sizeof arr);
+复合文字memcpy
int arr[3] = {a,b,c}; memcpy(arr, (int[]){d,e,f}, sizeof arr);
结构中。允许为struct
赋值,即使它包含数组也是如此。您只能初始化一次,之后最好是memcpy()
。您可以将3个新的值作为参数传递给函数并将值分配给数组的每个元素。C++的回答C问题是偏离主题的。另外,对于这么小的数组,堆分配是个坏主意。你无缘无故地让代码变得不必要的慢。你也在泄漏内存
int arr[3] = {a,b,c};
int arr2[3] = {d,e,f};
memcpy(arr, arr2, sizeof arr);
int arr[3] = {a,b,c};
memcpy(arr, (int[]){d,e,f}, sizeof arr);