C/C++数组赋值

Kyr*_*o M 3 c c++ arrays initialization variable-assignment

示例代码:

int ar[3];
............
ar[0] = 123;
ar[1] = 456;
ar[2] = 789;
Run Code Online (Sandbox Code Playgroud)

有没有办法让它缩短?就像是:

int ar[3];
............
ar[] = { 123, 456, 789 };
Run Code Online (Sandbox Code Playgroud)

我不需要解决方案:

int ar[] = { 123, 456, 789 };
Run Code Online (Sandbox Code Playgroud)

定义和初始化必须是分开的.

Dav*_*eas 5

您要求的不能直接完成.但是,您可以在那里做不同的事情,从创建使用聚合初始化初始化的本地数组开始,然后memcpy在数组上进行-ed(仅对POD类型有效),或者使用更高级别的库boost::assign.

// option1
int array[10];
//... code
{
   int tmp[10] = { 1, 2, 3, 4, 5 }
   memcpy( array, tmp, sizeof array ); // ! beware of both array sizes here!!
}  // end of local scope, tmp should go away and compiler can reclaim stack space
Run Code Online (Sandbox Code Playgroud)

我没有时间检查如何使用boost::assign,因为我几乎不使用原始数组.