【C语言初阶】维数组的创建和初始化

【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 如果初始化数组时省略方括号中的数字,编译器会根据初始化列表中的项数来确定数组的大小


总结:

  本节介绍了一维数组的创建和初始化;给出了数组在初始化时的注意事项。


感谢您的阅读!如有任何错误,欢迎您的批评指正!

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值