C语言中初始化数组的方法多样,以下将详细介绍几种常见的初始化数组的方法,并辅以示例代码。

使用初始化列表初始化数组
在C99标准中,可以使用初始化列表来初始化数组,这种方法在声明数组时直接给出所有元素的初始值。
示例代码:
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
使用循环初始化数组
对于较大的数组,使用初始化列表可能不太方便,这时,可以通过循环来逐个初始化数组元素。
示例代码:
#include <stdio.h>
int main() {
int arr[5];
for (int i = 0; i < 5; i++) {
arr[i] = i + 1;
}
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
使用静态初始化器初始化数组
在C99标准中,可以使用静态初始化器来初始化数组,这种方法在声明数组时直接给出所有元素的初始值,与初始化列表类似。
示例代码:

#include <stdio.h>
int main() {
int arr[5] = {[0] = 1, [1] = 2, [2] = 3, [3] = 4, [4] = 5};
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
使用指针初始化数组
通过指针,可以动态地初始化数组,这种方法适用于不确定数组大小的场景。
示例代码:
#include <stdio.h>
#include <stdlib.h>
int main() {
int size = 5;
int *arr = (int *)malloc(size * sizeof(int));
for (int i = 0; i < size; i++) {
arr[i] = i + 1;
}
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
free(arr);
return 0;
}
使用结构体初始化数组
如果数组元素是结构体类型,可以使用结构体初始化器来初始化数组。
示例代码:
#include <stdio.h>
typedef struct {
int id;
char name[10];
} Student;
int main() {
Student students[2] = {
{1, "Alice"},
{2, "Bob"}
};
for (int i = 0; i < 2; i++) {
printf("ID: %d, Name: %s\n", students[i].id, students[i].name);
}
return 0;
}
FAQs
Q1:如何初始化一个包含负数的数组?
A1: 初始化包含负数的数组与初始化包含正数的数组方法相同,只需在初始化列表中给出相应的负数值即可。

示例代码:
int arr[5] = {-1, -2, -3, -4, -5};
Q2:如何初始化一个二维数组?
A2: 初始化二维数组与初始化一维数组类似,只需在初始化列表中给出所有行的初始值即可。
示例代码:
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}}; 