可以(重新)将数组的所有值设置在一行中(在初始化之后)吗?

tom*_*tom 13 c arrays heap initialization

在C中,我知道我可以制作这样的数组

int myarray[5] = {a,b,c,d,e};
Run Code Online (Sandbox Code Playgroud)

但是,想象一下这个数组已经初始化了

int myarray[5];
Run Code Online (Sandbox Code Playgroud)

然后在某个时刻,我想设置/更改所有值而不去

myarray[0] = a;
myarray[1] = b;
myarray[2] = c;
myarray[3] = d;
myarray[4] = e;
Run Code Online (Sandbox Code Playgroud)

而是更喜欢的东西

myarray = {a,b,c,d,e};
Run Code Online (Sandbox Code Playgroud)

我问这个的原因是因为如果我在堆上声明我的数组,我将初始化数组,如:

int* myarray = malloc(5*sizeof(int));
Run Code Online (Sandbox Code Playgroud)

然后我希望能够在一行中输入所有值(主要是为了让我的代码看起来更干净)

R..*_*R.. 11

memcpy(myarray, (int [5]){a,b,c,d,e}, 5*sizeof(int));
Run Code Online (Sandbox Code Playgroud)

  • 是.但是当有人使用模板给出C++答案时,它是否需要一个需要C++ 98的注释?或者当我在C中使用函数原型时,我是否需要提及它在ANSI C之前的实现中不起作用?C99**是**当前的C语言. (3认同)
  • @R.:不幸的是很多人都被C89困住了,例如微软仍然没有在Visual Studio中获得C99支持,许多学生仍然不得不使用Turbo C等过时的编译器.所以假设大多数人可能没有理由能够使用C99特有的功能. (3认同)