C语言中,初始化数组的所有成员为相同的值有多种方法,可以使用循环、使用 memset和显式初始化等方法。初始化数组的方法,取决于具体的应用场景和编程习惯。综合考虑代码的可读性、效率和兼容性,选择最适合的方法。

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;
}