如何将数组的所有元素设置为零或任何相同的值?

时间:2014-05-07 05:21:51

标签: c arrays linux

我是 C 的初学者,我真的需要一种有效的方法来设置数组的所有元素等于零或任何相同的值。我的阵列太长了,所以我不想用for循环来做。

4 个答案:

答案 0 :(得分:12)

如果您的阵列具有静态存储分配,则默认将其初始化为零。但是,如果数组具有自动存储分配,那么您可以使用包含零的数组初始化列表将其所有元素初始化为零。

// function scope
// this initializes all elements to 0
int arr[4] = {0};
// equivalent to
int arr[4] = {0, 0, 0, 0};

// file scope
int arr[4];
// equivalent to
int arr[4] = {0};

请注意,没有标准方法可以使用包含单个元素(值)的初始化列表将数组元素初始化为零以外的值。您必须使用初始化列表显式初始化数组的所有元素。

// initialize all elements to 4
int arr[4] = {4, 4, 4, 4};
// equivalent to
int arr[] = {4, 4, 4, 4};

答案 1 :(得分:5)

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 only in GCC

答案 2 :(得分:5)

如果你确定长度,你可以使用memset。

memset(ptr,0x00,length)

答案 3 :(得分:1)

如果您的数组是静态的或全局的,则在main()启动之前将其初始化为零。这将是最有效的选择。