我需要动态创建一个整数数组。我发现使用静态数组语法
int a [5]={0};
将所有元素的值正确初始化为0。
在创建像
这样的动态数组时,有没有办法做类似的事情int* a = new int[size];
无需遍历数组的所有元素?或者使用for循环赋值仍然是最佳方法? 感谢
答案 0 :(得分:35)
答案 1 :(得分:4)
我会这样做:
int* a = new int[size];
memset(a, 0, size*sizeof(int));
答案 2 :(得分:4)
我建议您使用std::vector<int>
或std::array<int,5>
答案 3 :(得分:3)
值使用()
示例:
int *p = new int[10]; // block of ten uninitialized ints
int *p2 = new int[10](); // block of ten ints value initialized to 0
答案 4 :(得分:2)
使用0以外的其他值初始化
指针数组:
int size = 10;
int initVal = 47;
int *ptrArr = new int[size];
std::fill_n(ptrArr, size, initVal);
std::cout << *(ptrArr + 4) << std::endl;
std::cout << ptrArr[4] << std::endl;
对于非指针数组
int size = 10;
int initVal = 47;
int arr[size];
std::fill_n(arr, size, initVal);
对于任何DataType都非常有用!
!注意,一些编译器可能不会抱怨访问数组范围之外的值,这可能会返回非零值
答案 5 :(得分:0)
int *a=new int[n];
memset(a, 0, n*sizeof(int));
将数组的所有字节设置为0.对于char *
,也可以使用memset。
有关更正式的定义和用法,请参阅http://www.cplusplus.com/reference/clibrary/cstring/memset/。