将数组的所有元素初始化为0

时间:2013-11-20 17:37:04

标签: c arrays

在C语言中,我正在创建一个数组(2维),其中所有元素都是零

我是按照以下方式做的:

int a[5][5],i,j;  //a is the required array
for(i=0;i<5;i++)
   for(j=0;j<5;j++)
       a[i][j]=0;

我也知道其他方式:

int a[5][5]={0};

两者是否相同或存在差异?

应该首选什么?

谢谢!

4 个答案:

答案 0 :(得分:6)

第二种方法更简洁。还要考虑:

memset(&a, 0, sizeof(a));

答案 1 :(得分:6)

两种方式都有相同的效果,但第二种方法通常会更快,因为它允许编译器优化和矢量化该代码。

另一种被广泛接受的方式(也是可以优化的)是

memset(a, 0, sizeof(a));

答案 2 :(得分:3)

第二个是有用的。 第一个使用for循环,因此需要时间。 还有其他方法可以初始化arrray ......

int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }; // All elements of myArray are 5
int myArray[10] = { 0 };    // Will initialize all elements to 0
int myArray[10] = { 5 };    // Will initialize myArray[0] to 5 and other elements to 0
static int myArray[10]; // Will initialize all elements to 0
/************************************************************************************/
int myArray[10];// This will declare and define (allocate memory) but won’t initialize
int i;  // Loop variable
for (i = 0; i < 10; ++i) // Using for loop we are initializing
{
    myArray[i] = 5;
}
/************************************************************************************/
int myArray[10] = {[0 ... 9] = 5}; // This works in GCC
memset(myArray, 0, sizeof(myArray));

答案 3 :(得分:0)

如果我不想过度强调我的眼睛(以及我的编译器),我会更喜欢后者。