【C语言初阶】一维数组的创建和初始化
一、一维数组
1 数组的创建
数组是一组类型相同元素的集合。
1.1 数组的创建方式
type_t arr_name [const_n]
//type_t 表示数组中存放的元素类型
//arr_name 表示数组名称
//const_n 表示数组的大小,是一个整型常量表达式
1.2 数组创建实例
代码示例:
#include<stdio.h>
int main()
{
//数组的创建
//代码1
int arr1[10];
//代码2
int count = 10;
int arr2[count];//该数组是否能正常创建?
//代码3
char arr3[10];
float arr4[5];
double arr5[20];
return 0;
}
解释说明:
1 int arr1[10];
:创建一个存放10个元素的整型数组,各元素初始值为随机值。
2 int count = 10; int arr2[count];
:在C99标准之前,数组的创建需要在 []
中给一个常量才可以。
C99标准支持了变长数组这一概念,允许数组的大小由变量来指定,但是使用时不能给数组进行初始化。
像VS2019、VS2022这样的IDE是不支持变长数组的。
3 在 {}
块内创建的对象称为局部对象,存放在栈区,如果不进行初始化,那么其初始值就是随机值。
2 一维数组的初始化
数组的初始化是指:在创建数组的同时,给数组中的元素赋予初始值。
代码示例:
#include<stdio.h>
int main()
{
//数组的初始化
int arr1[10] = { 1, 2, 3 };//[1 2 3 0 0 0 0 0 0 0]
int arr2[] = { 1,2,3,4 };//[1 2 3 4]
int arr3[5] = { 1,2,3,4,5 };//[1 2 3 4 5]
char arr4[3] = { 'a', 98 , 'c' };//[a 98 c] -> [97 98 99]
char arr5[] = { 'a', 'b', 'c' };//[a b c] -> [97 98 99]
char arr6[] = "abc";//[a b c \0] -> [97 98 99 0]
char arr7[] = { 'a', 'b', 'c' };//[a b c] -> [97 98 99]
char arr8[] = { 'a', 'b', 'c', '\0' };//[a b c \0] -> [97 98 99 0]
return 0;
}
解释说明:
1 int arr1[10] = { 1, 2, 3 };
数组的不完全初始化,未初始化的元素被默认初始化为0。
2 int arr2[] = { 1,2,3,4 };
不指定数组长度的初始化,如果数组有初始化,就可以省略数组长度。
3 int arr3[5] = { 1,2,3,4,5 };
数组的完全初始化。
4 char arr4[3] = { 'a', 98 , 'c' };
98是字符 b
的ASCII码值,这表明字符型数据是以其对应的ASCII码值存储的。
5 char arr6[] = "abc";//[a b c \0] -> [97 98 99 0]
使用字符串初始化数组,包含结尾的 \0
也要存放。当然该字符串不会真正的被创建。
6 在创建数组的时候,如果想不显式地指定数组的长度就得对数组进行初始化。数组的长度会根据初始化内容来确定。
注意事项:
1 用花括号 { }
括起来的是初始化列表。不同的值用逗号隔开。
2 一般来说,初始化列表中的项数应与数组的大小一致。
3 当初始化列表中的值少于数组元素个数时,编译器会把剩余的元素初始化为0。
也就是说,如果不初始化数组,数组元素和未初始化的普通变量一样,其中存储的都是随机值(垃圾值);如果初始化部分数组元素,剩余的元素会被初始化为0。
4 如果初始化列表的项数多于数组元素个数,编译器就会报错。
5 如果初始化数组时省略方括号中的数字,编译器会根据初始化列表中的项数来确定数组的大小。
总结:
本节介绍了一维数组的创建和初始化;给出了数组在初始化时的注意事项。
感谢您的阅读!如有任何错误,欢迎您的批评指正!