C / C ++数组赋值

示例代码:

int ar[3]; ............ ar[0] = 123; ar[1] = 456; ar[2] = 789; 

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

 int ar[3]; ............ ar[] = { 123, 456, 789 }; 

我不需要解决方案:

 int ar[] = { 123, 456, 789 }; 

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

您所要求的不能直接完成。 然而,你可以在那里做不同的事情,从创建一个用聚合初始化初始化的本地数组开始,然后在数组上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 

我没有时间检查如何使用boost::assign来执行此操作,因为我几乎不使用原始数组。

可以直接分配数组:

 int a[3] = {1, 2, 3}; 

另请参阅C ++ Arrays教程 。

int a [] = {1,2,3};

这不适合你吗?

 main() { int a[] = {1,3,2}; printf("%d %d %d\n", a[0], a[1], a[2]); printf("Size: %d\n", (sizeof(a) / sizeof(int))); } 

打印:

 1 3 2 Size: 3 

C99arrays初始化怎么样?

 int array[] = { [0] = 5, // array[0] = 5 [3] = 8, // array[3] = 8 [255] = 9, // array[255] = 9 }; 
 #include  using namespace std; int main() { int arr[3]; arr[0] = 123, arr[1] = 345, arr[2] = 567; printf("%d,%d,%d", arr[0], arr[1], arr[2]); return 0; }