How to set all elements of an array to zero or any same value?
本问题已经有最佳答案,请猛点这里访问。
我是C语言的初学者,我真的需要一种有效的方法来设置数组的所有元素等于零或任何相同的值。我的数组太长,所以我不想使用for循环。
如果您的数组有静态存储分配,那么它默认初始化为零。但是,如果数组具有自动存储分配,则可以使用包含零的数组初始值设定项列表将其所有元素初始化为零。
1 2 3 4 5 6 7 8 9 10 | // 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}; |
请注意,没有标准方法可以使用包含单个元素(值)的初始值设定项列表将数组元素初始化为除零以外的值。必须使用初始值设定项列表显式初始化数组的所有元素。
1 2 3 4 | // initialize all elements to 4 int arr[4] = {4, 4, 4, 4}; // equivalent to int arr[] = {4, 4, 4, 4}; |
号
如果你确定长度的话,你可以使用memset。
内存集(ptr,0x00,length)
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 |
如果数组是静态的或全局的,那么在main()开始之前它已经初始化为零。这将是最有效的选择。