C语言数组初始化的方式有哪些
在C语言中,数组是一种非常重要的数据结构,它可以存储多个相同类型的数据,为了方便程序员使用数组,C语言提供了多种数组初始化的方式,本文将详细介绍这些初始化方式。
1、静态初始化
静态初始化是指在编译时就已经确定了数组的大小和元素的值,静态初始化的语法格式如下:
数据类型 数组名[常量表达式] = {元素1, 元素2, ..., 元素n};
int arr[5] = {1, 2, 3, 4, 5};
2、动态初始化
动态初始化是指在运行时根据需要确定数组的大小和元素的值,动态初始化的语法格式如下:
数据类型 *数组名;
数组名 = (数据类型 *)malloc(数组大小 * 元素大小);
int *arr;
arr = (int *)malloc(5 * sizeof(int));
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
3、部分初始化
部分初始化是指只对数组的部分元素进行初始化,未初始化的元素将被自动赋值为0,部分初始化的语法格式如下:
数据类型 数组名[常量表达式] = {元素1, 元素2, ..., 元素n};
int arr[5] = {1, 2, 3}; // 前三个元素被初始化,后两个元素被赋值为0
4、省略号初始化
省略号初始化是指用省略号(...)表示数组的剩余元素,省略号初始化的语法格式如下:
数据类型 数组名[常量表达式] = {元素1, 元素2, ...};
int arr[5] = {1, 2, ...}; // 前两个元素被初始化,后三个元素被赋值为0
5、指定索引初始化
指定索引初始化是指只对数组的指定索引的元素进行初始化,未初始化的元素将被自动赋值为0,指定索引初始化的语法格式如下:
数据类型 数组名[常量表达式] = {元素1 = 值1, 元素2 = 值2, ..., 元素n = 值n};
int arr[5] = {1 = 10, 3 = 30}; // 第一个元素被赋值为10,第三个元素被赋值为30,其他元素被赋值为0
6、自动计算数组大小初始化
自动计算数组大小初始化是指在定义数组时,不指定数组的大小,而是通过初始化时的元素个数来计算数组的大小,自动计算数组大小初始化的语法格式如下:
数据类型 *数组名[] = {元素1, 元素2, ..., 元素n};
int *arr[] = {1, 2, 3, 4, 5}; // 根据元素个数计算数组大小,结果为5个整数大小的数组空间,每个整数占用4个字节,所以总共需要20个字节的空间来存储这个数组。
7、函数参数传递时的数组初始化
在函数参数传递时,如果数组作为参数传递,那么编译器会自动将数组转换为指针,此时,可以使用上述的动态初始化、部分初始化、省略号初始化等方法对数组进行初始化,需要注意的是,函数内部对数组的修改会影响到原数组的值。
8、VLA(变长数组)初始化
VLA是C99标准引入的一种变量长度数组,它允许在运行时确定数组的大小,VLA的语法格式如下:
数据类型 数组名[常量表达式]; ... // VLA的定义部分,不需要指定大小和初始值,可以在后面的代码中进行初始化和赋值操作。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/263260.html