HCRM博客

C语言数组初始化方法详解

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

C语言数组初始化方法详解-图1

使用初始化列表初始化数组

在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标准中,可以使用静态初始化器来初始化数组,这种方法在声明数组时直接给出所有元素的初始值,与初始化列表类似。

示例代码:

C语言数组初始化方法详解-图2

#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: 初始化包含负数的数组与初始化包含正数的数组方法相同,只需在初始化列表中给出相应的负数值即可。

C语言数组初始化方法详解-图3

示例代码:

int arr[5] = {-1, -2, -3, -4, -5};

Q2:如何初始化一个二维数组?

A2: 初始化二维数组与初始化一维数组类似,只需在初始化列表中给出所有行的初始值即可。

示例代码:

int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/ask/45901.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~