C 语言之一维数组(详细版)

目录

1.一维数组的定义和初始化
2.一维数组在内存中的存储
3.一维数组的使用
4.一维数组的应用实例

1. 一维数组的定义和初始化

1.1 数组的定义

     ①. 数组是包含给定类型的一组数据,并将这些数据依次存储在连续的内存空间中。每个独立的数据被称为数组的元素(element)元素的类型可以是任意类型。

     ②. 数组本身也是一个结构,其类型由它的元素类型延伸而来。更具体地说,数组的类型由元素的类型和数量所决定。

     ③. 如果一个数组的元素是 T 类型,那么该数组就称为 “ T 数组 ”。例如,如果元素类型为 int ,那么该数组的类型就是 “ int 数组 ”。然而,int 数组类型是不完整的类型,除非指定了数组元素的数量。如果一个 int 数组有 16 个元素,那么它就是一个完整的对象类型,即 “ 16 个 int 元素数组 ”。

1.2 一维数组的定义和初始化

     ①. 数组的定义决定了数组名、元素类型以及元素个数。

     ②. 其语法如下:<类型> 数组名 [ <元素数量> ]

     ③. 元素数量在方括号([ ])之间,它必须是大于 0 的 整型常量表达式

     ④. 示例一

#include<stdio.h>
/** 数组初始化 */
int main()
{
	int ar[5];								// 定义数组 ar 未初始化
	int br[5] = { 12, 23, 34, 45, 56 };		// 定义数组 br 已初始化
	int cr[5] = { 12, 23, 34};				// 定义数组 cr 未初始化的数值为 0
	int dr[] = { 12, 23, 34, 45, 56, 67, 78, 89, 90, 100 };
	int n = sizeof(dr) / sizeof(dr[0]);		// 计算数组元素个数
	for (int i = 0; i < 5; ++i)
	{
		printf("%2d ", br[i]);
	}
	printf("\n");
	for (int j = 0; j < 5; ++j)
	{
		printf("%2d ", cr[j]);
	}
	printf("\n");
	printf("n = %d \n", n);
	return 0;
}

运行结果
在这里插入图片描述
     ⑤. 总结

     1)数组的元素个数 n 可以通过 sizeof 计算得到,例如,数组 ar[ n ] 的中的元素个数 n = sizeof(ar) / sizeof(ar[ 0 ])。

     2)C 中数组大小在编译时确定,编译系统按照定义为数组分配一段连续的存储单元,这段单元的大小也是不能改变的,因此数组大小不能用变量定义,而只能是一个正整数常量

     3)在 C99 标准中,定义数组的 <元素数量> 可以是变量,多为数组也一样。如 int ar[ n ]; int aar[ n ][ m ]; n 和 m 都可以是变量。 注:vs 不支持 C99 标准

2. 一维数组在内存中的存储

2.1 图解
在这里插入图片描述

3. 一维数组的使用

3.1 一维数组的使用:

     ①. 数组在存储单元中是顺序连续存放的,任何一个元素都是单独访问,其标识方法是用数组名和下标 数组名 [ 整型表达式 ];整型表达式可以是变量,也可是常量,但必须是整型类型。

     ②. 示例一

#include<stdio.h>
/** 一维数组的使用 */
int main()
{
	const int n = 5;				// 常整型 只可读不可写
	int ar[5] = {0};
	for (int i = 0; i < n; ++i)		// 初始化 给数组赋值
	{
		ar[i] = i;
	}
	for (int i = 0; i < n; ++i)		// 打印 数组元素以及对应的地址
	{
		printf("0x%p == > %d \n", &ar[i], ar[i]);
	}
	return 0;
}

运行结果
在这里插入图片描述
3.2 其他类型数组

     ③. 示例二

#include<stdio.h>
int main()
{
	const int ar[5] = { 1,2,3,4,5 };			// 常性数组 只可读不可写(不能变)
	char str1[10] = {"shuzu"};					// 10 个 char 型的元素
	char str2[10] = {'s', 'h', 'u', 'z', 'u'};	// 10 个 char 型的元素
	int* par[10] = { NULL };					// 10 个 int* 型元素
	char* pstr[10] = { NULL };					// 10 个 char* 型元素
	return 0;
}

调试窗口
在这里插入图片描述
     ④. 示例三

#include<stdio.h>

int main()
{
	int a = 10, b = 20, c = 30, d = 40, e = 50;
	int* par[5] = { &a,&b,&c,&d,&e };			// 数组存放的是各元素的地址
	return 0;
}

调试窗口
在这里插入图片描述

4. 一维数组的应用实例

     查表法是将一些事先计算好的结果,存储在常量数组中,用到是直接按下标取数据,以节省运行时的计算时间,是以空间换时间。

     一维数组的应用实例详见《【C 语言之项目实战】判断闰年及计算天数(详细版)》,请点击此处进行查阅…

     二维数组的知识点详见《C语言之二维数组(详细版)》,请点击此处进行查阅…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值