1、使用循环
最直接的方法,通过循环为数组的每个元素赋值,代码如下,
#include <stdio.h>
int main() {
int arr[10];
int value = 42; // 要初始化的值
for (int i = 0; i < 10; i++) {
arr[i] = value;
}
// 打印数组
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
return 0;
}
2、使用标准库函数 memset
memset
将内存逐字节设置,因此适用于将数组初始化为 0
或其他单字节值。如果数组类型是 int
等多字节类型,非零初始化需要其他方法。对于初始化为零或字节值的情况,memset
是一个快速的方法,代码如下,
#include <stdio.h>
#include <string.h>
int main() {
int arr[10];
memset(arr, 0, sizeof(arr)); // 将数组所有字节设置为 0
// 打印数组
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
return 0;
}
3、使用显式初始化
如果数组大小固定,显式初始化为相同值是简单且直观的方法,代码如下,
#include <stdio.h>
int main() {
int arr[10] = {42, 42, 42, 42, 42, 42, 42, 42, 42, 42}; // 显式初始化
// 打印数组
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
return 0;
}
4、使用循环配合数组大小的宏定义
如果数组大小较大,可以使用循环并结合数组大小的宏,代码如下,
#include <stdio.h>
#define ARRAY_SIZE 100
int main() {
int arr[ARRAY_SIZE];
int value = 7;
for (int i = 0; i < ARRAY_SIZE; i++) {
arr[i] = value;
}
// 打印部分数组
for (int i = 0; i < 10; i++) { // 打印前 10 个元素
printf("%d ", arr[i]);
}
return 0;
}
5、结构化初始化为 0
如果只需要初始化为零,可以直接使用以下方法,
#include <stdio.h>
int main() {
int arr[10] = {0}; // 初始化数组所有元素为 0
// 打印数组
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
return 0;
}