在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};
两者是否相同或存在差异?
应该首选什么?
谢谢!
答案 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)