示例代码:
int ar[3];
............
ar[0] = 123;
ar[1] = 456;
ar[2] = 789;
有没有更简短的初始化方式?比如说:
int ar[3];
............
ar[] = { 123, 456, 789 };
我不需要像这样的解决方案:
int ar[] = { 123, 456, 789 };
定义和初始化必须分开。
示例代码:
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
到您的数组中(仅适用于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
,因为我几乎从不使用原始数组。
a = {1, 2, 3}
。但这实际上是C++0x(“扩展初始化列表”)。如果你需要在每个循环迭代中重新分配数组,你仍然可以使用memcpy
。 - AndiDogint 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
main
没有返回类型!?你在用什么编译器!? - Yakov Galka#include <iostream>
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;
}
C99数组初始化怎么样?
int array[] = {
[0] = 5, // array[0] = 5
[3] = 8, // array[3] = 8
[255] = 9, // array[255] = 9
};