Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在C中初始化后将列表分配给数组_Arrays_C - Fatal编程技术网

Arrays 如何在C中初始化后将列表分配给数组

Arrays 如何在C中初始化后将列表分配给数组,arrays,c,Arrays,C,我调用一个函数来更改C中的数组,比如 int array[3] = {a, b, c} 到 但是,这给了我一个错误。是否有另一种方法可以像我在初始化时使用C中的大括号那样一次性分配一组值?您可以像这样重新分配此数组的内存(C++): 在纯C中,应该使用malloc和free而不是new和delete 或者,如果你不想完全破坏你的第一组对象,就不要调用delete,只要用new重新分配内存,你就不能在C语言中将一个数组分配给另一个数组。没有什么理由解释为什么,这只是语言的设计方式 一些备选方案:

我调用一个函数来更改C中的数组,比如

int array[3] = {a, b, c}


但是,这给了我一个错误。是否有另一种方法可以像我在初始化时使用C中的大括号那样一次性分配一组值?

您可以像这样重新分配此数组的内存(C++):

在纯C中,应该使用
malloc
free
而不是
new
delete


或者,如果你不想完全破坏你的第一组对象,就不要调用delete,只要用new重新分配内存,你就不能在C语言中将一个数组分配给另一个数组。没有什么理由解释为什么,这只是语言的设计方式

一些备选方案:

  • struct
    wrapper

    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);