首页 > 解决方案 > 哪个是初始化数组、“memset”或“{//value}”的最佳方法?

问题描述

int main(){

int ar[50]={1};

//OR

int br[50];

memset(br, 1, sizeof(br)); 

return 0;

}

标签: c++arraysstl

解决方案


假设你这样做

int ar[50] = {-1};

现在你会期望这条线用 -1 初始化所有的数组元素,但它不会。它只会将数组的第一个元素设置为 -1 并将其余元素设置为 0。而 memset 将显示预期的行为。

在 C++ 中看到将数组的所有元素初始化为一个默认值吗?了解更多信息。

让我们举个例子:-

int arr[5] = { 1, 2 }; // this will initialize to 1,2,0,0,0



int ar[5] = {  }; // this will  initialize  all elements 0



int myArray[10] = {}; // his will also all elements 0 in C++ not in c

因此,如果要将特定值初始化为数组,请使用 memset()。

如果要将数组中的所有元素初始化为 0,请使用

static int myArray[10]; // all elements 0

因为如果没有指定初始化器,具有静态存储持续时间的对象将初始化为 0,并且它比 memset() 更便携。

此外, Theint ar[50]={0};将是无限的,因为它只是初始化数组并且没有结尾,但memset(arr,0,sizeof(br))它具有结束数组中循环的正确方法


推荐阅读