C语言从入门到精通————8.数组

前言

当我们有非常多的变量值需要进行存储时,我们就会接触到“数组”这个概念,他可以使用一条C语言语句来申请若干个存储空间来存储若干变量。

数组

(1)数组是一组有序数据的集合。数组中各数据的排列是有一定的规律的,下标代表数据在数组中的序号。

(2)用一个数组名和下标来唯一确定数组中的元素,如a3就代表第3个元素的值。

(3)数组中的每一个元素都属于同一数据类型。不可以把不同类型的数据放在同一个数组中。

数组的定义

一维数组:  

定义格式: 类型说明符  数组名 [  常量表达式 ];

注:类型说明符————即数据类型(int、char、float等等);

       数组名——————必须符合标识符的要求

       常量表达式————必须为一个确定值

一维数组举例: int  a[5];

图形化显示:

01234

内存存储模拟显示:

内存地址:0xff6c                  0xff70                           0xff74                            0xff78                            0xff8c

01234
数组值:   a[0]                        a[1]                             a[2]                              a[3]                                 a[4]

注意:数组的下标是从“0”开始的


二维数组:

定义格式:  类型说明符   数组名[常量表达式1][常量表达式2]

常量表达式1————行数

常量表达式2————列数

二维数组举例:int  a [3][5];

图形化显示:

0,00,10,20,30,4
1,01,11,21,31,4
2,02,12,22,32,4
内存模拟显示(第一排):

内存地址:0xff6c                    0xff70                           0xff74                            0xff78                            0xff8c

0,00,10,20,30,4

对应数组: a[0][0]                    a[0] [1]                          a[0][2]                            a[0][3]                           a[0][4]


数组的初始化

一维数组的初始化:

格式:     类型说明符  数组名[元素个数]={数值对应序列};

例如:

int    a[]={1,2,3,4,5};
int    a[5]={1,1,1,1,1};
数组的每一个元素就相当于一个变量, 可进行赋值、运算、输入、输出等操作。同时数组也要注意越界的风险,避免“溢出”。

二维数组的初始化:

格式:   类型说明符  数组名[行数][列数]={{第一行数组序列值},{第二行数组序列值},.......{第n行数组序列值}};

提示:可以把二维数组看成一张二维表格的形式来进行填写数值即可,但是需要一行一行的填写(即行优先)。

例如:

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

注意:空白项直接用“0”来填充数值。


数组的引用

一维数组:

引用的方式————数组名[下标];

例如:

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

如果要引用数组a的第二个元素则————a [1] ,其值为2

二维数组:

引用的方式————数组名[行数][列数];

例如:

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

如果要引用数组a的第二行,第二列的数组元素则————a[1][1],其值为5

注意:数组的下标以“0”开始!

字符数组

正如其名“字符数组”,字符数组里面存放的数据类型是“字符”,且其具备数组的特征。

字符数组的初始化:

char  数组名 [数组长度]=“数组内容”;

例如:

char     a [10]="China";

China\0\0\0\0\0
特点:
  • 字符串有效长度用'\0'结束符来判断
  • 字符串常量自动'\0'结束符
  • 字符数组并不要求它的最后一个字符为'\0',甚至可以不包含'\0',但按照字符串方式输出结果可能包括非有效字符
  • 对字符数组处理常采用字符串处理方式,建议用结束符'\0'

注:在使用字符数组时需要注意“越界”的问题。

程序示例

程序功能:

对两个数组中的数据进行排序,并且按照升序显示

程序源代码:

#include <stdio.h>

int compare(int x, int y);

int main(void)
{
	int i1, i2, i3;
	int arr1[5] = {1, 4, 5, 8, 9};
	int arr2[5] = {2, 3, 6, 7, 10};
	int arr3[10];

	i1 = i2 = i3 = 0;
	while (i1 < 5 && i2 < 5)
	{
		if (compare(arr1[i1], arr2[i2]))
		{
			arr3[i3++] = arr1[i1++]; 
		}
		else
		{
			arr3[i3++] = arr2[i2++];
		}
	}
	if (i1 == 5)
	{
		while (i2 < 5)
		{
			arr3[i3++] = arr2[i2++];
		}
	}
	else
	{
		while (i1 < 5)
		{
			arr3[i3++] = arr2[i2++];
		}
	}
	for (i3 = 0; i3 < 10; i3++)
	{
		printf("%d ", arr3[i3]);
	}
	printf("\n");
	return 0;
}

int compare(int x, int y)
{
	if (x <= y)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
运行结果:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLy_鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值