第六章数组 本章的主要内容包括: 维和二维数组的定义 ◆数组元素引用 ◆字符数组和字符串 ◆数组应用的基本算法 回首页
本章的主要内容包括: 一维和二维数组的定义 数组元素引用 字符数组和字符串 数组应用的基本算法 第六章 数组 回首页
6.1一维数组 6.1.1一维数组的定义 数组的维数是指表示数组使用的下标个数,如果数组中每个元素只带有 个下标,称这样的数组为一维数组。 定义形式为: 类型说明符数组名[常量表达式]; 类型说明符指出数组元素的数据类型,数组名是标识符,元素个数使用 方括号和常量表达式。 讨论C语言数组大小的规定 讨论如何理解数组名。 6.1.2—维数组的引用 C语言中,一个数组不能整体应用,数组名是一个地址常量,不能对其赋 值,只能使用数组中的元素。 方法:数组名[下标] 讨论C语言使用下标的规定
6.1.1 一维数组的定义 数组的维数是指表示数组使用的下标个数,如果数组中每个元素只带有 一个下标,称这样的数组为一维数组。 定义形式为: 类型说明符 数组名[常量表达式]; 类型说明符指出数组元素的数据类型,数组名是标识符,元素个数使用 方括号和常量表达式。 讨论C语言数组大小的规定。 讨论如何理解数组名。 6.1.2 一维数组的引用 C语言中,一个数组不能整体应用,数组名是一个地址常量,不能对其赋 值,只能使用数组中的元素。 方法: 数组名[下标] 讨论C语言使用下标的规定。 6.1一维数组
6.1一维数组 6.1.3一维数组存储 ●C系统定义数组时,根据定义语句中的空间需求,分配足够的的存储空间 数组元素顺序存放在这片存储单元中。下标为0的元素排在最前 每个元素占据的存储空间完全相同 计算数组的空间开销,应该使用 sizeof算符,方法有二: (1)存储容量=数组元素个数* sizeof(数组元素类型名) (2)存储容量= sizeof(数组名) 6.1.4一维数组初始化 维数组定义时可以用花括号对全部或前面一部分数组元素赋初值,叫 初始化。通过初始化也可以定义一维数组 数组也是变量,在作用域和存在期方面与简单变量的规定相同,全局数 组在程序开始执行前建立,在静态存储区存储,定义全局数组时,可 以进行初始化,如果没有,系统自动将全局数组的值初始化为0。局 部数组存储在动态存储区中,建立时如果没有进行初始化,其值是不 确定的
6.1.3 一维数组存储 C系统定义数组时,根据定义语句中的空间需求,分配足够的的存储空间, 数组元素顺序存放在这片存储单元中。下标为0的元素排在最前面, 每个元素占据的存储空间完全相同。 计算数组的空间开销,应该使用sizeof算符,方法有二: (1)存储容量= 数组元素个数*sizeof(数组元素类型名) (2)存储容量= sizeof(数组名) 6.1.4 一维数组初始化 一维数组定义时可以用花括号对全部或前面一部分数组元素赋初值,叫 初始化。通过初始化也可以定义一维数组。 数组也是变量,在作用域和存在期方面与简单变量的规定相同,全局数 组在程序开始执行前建立,在静态存储区存储,定义全局数组时,可 以进行初始化,如果没有,系统自动将全局数组的值初始化为0。局 部数组存储在动态存储区中,建立时如果没有进行初始化,其值是不 确定的。 6.1一维数组
6.1一维数组 6.1.4-维数组初始化 例:解释下面数组定义和初始化的意义: inta[6}={1,2,324,56} inta6}={1,2 ●inta[3}{1,2,3,4}; inta[={1,2,3,4,5,6} 讨论例题的结果及原因 6.1.5一维数组实例
6.1.4 一维数组初始化 例: 解释下面数组定义和初始化的意义: int a[6]={1,2,3,4,5,6}; int a[6]={1,2}; int a[3]={1,2,3,4}; int a[]={1,2,3,4,5,6}; 讨论例题的结果及原因。 6.1.5 一维数组实例 6.1一维数组
6.2二维和多维数组 6.2.1二维数组的定义 二维数组:数组中每个元素带有两个下标 定义形式为: 类型说明符数组名常量表达式订常量表达式2 逻辑上,可把二维数组看成是一个矩阵,常量表达式1表示 矩阵有几行,常量表达式2表示矩阵的列数。 可以把二维数组看作是一种特殊的一维数组,它的元素又是 维数组。即二维数组是数组的数组。 讨论inta[34;的矩阵理解和数组之数组理解。 讨论多维数组的理解问题
6.2.1 二维数组的定义 二维数组:数组中每个元素带有两个下标。 定义形式为: 类型说明符 数组名[常量表达式1][常量表达式2]; 逻辑上,可把二维数组看成是一个矩阵,常量表达式1表示 矩阵有几行,常量表达式2表示矩阵的列数。 可以把二维数组看作是一种特殊的一维数组,它的元素又是 一维数组。即二维数组是数组的数组。 讨论 int a[3][4]; 的矩阵理解和数组之数组理解。 讨论多维数组的理解问题。 6.2 二维和多维数组
6.2二维和多维数组 622二维数组的引用 引用二维数组元素时必须带有两个下标,形式如下 数组名[下标1下标2 623二维数组存储 二维数组在内存中占据一系列连续的存储单元,数组元素按行顺 序存放,先放行下标是0的元素,再放行下标是1的元素, 数组nta3[4]的存储示意 a0J0]a0]a02]ao3]a[10a1ua12a[1l3]a201a2ua22a23
6.2.2 二维数组的引用 引用二维数组元素时必须带有两个下标,形式如下: 数组名[下标1][下标2] 6.2.3 二维数组存储 二维数组在内存中占据一系列连续的存储单元,数组元素按行顺 序存放,先放行下标是0的元素,再放行下标是1的元素,... 数组int a[3][4]的存储示意 6.2 二维和多维数组 a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3]
6.2二维和多维数组 6.2.4二维数组初始化 二维数组定义时也可以用花括号对全部或前面一部分数组元 ,素初始化。通过初始化也可以定义二维数组 例:解释下面数组定义和初始化的意义: inta2][3}={1,2,3,4,5,6} inta2][3}={1,2} inta2]|3}={12,3},{4,5.6}} inta[3[4]={{1,2},{3},{4,5},{6}; int al3|4}={1,2},{3},} e int a2131.234.6178 inta3]={{1,2,3},{4,5},{6}} inta3}={1,2,3,4,5,6,7} →6.2.5二维数组实例
6.2.4 二维数组初始化 二维数组定义时也可以用花括号对全部或前面一部分数组元 素赋初始化。通过初始化也可以定义二维数组。 例: 解释下面数组定义和初始化的意义: int a[2][3]={1,2,3,4,5,6}; int a[2][3]={1,2}; int a[2][3]={{1,2,3}, {4,5,6} }; int a[3][4]={{1,2}, {3}, {4,5},{6}}; int a[3][4]={{1,2},{3}, }; int a[2][3]={1,2,3,4,5,6,7,8}; int a[][3]={ {1,2,3},{4,5},{6}}; int a[][3]={ 1,2,3,4,5,6,7}; 6.2.5 二维数组实例 6.2 二维和多维数组
6.3字符数组和字符串 6.3.1字符数组 字符数组是元素数据类型是字符类型的一维数组。字 符数组引用、存储、初始化的方法都与一维数组相 同,只是要注意字符数组的元素是字符,有特殊的 字面表示格式 ●字符数组初始化的方法也和一维数组相同 例: char s5]{1,223,242,5} char S[5]={1,23}; char s]={1,22,23,42,25”} 初始化时没有赋值的元素值为空是编码为0的字符,叫 空字符,用”0表示。它即不是空格字符(32), 不是0
6.3.1 字符数组 字符数组是元素数据类型是字符类型的一维数组。字 符数组引用、存储、初始化的方法都与一维数组相 同,只是要注意字符数组的元素是字符,有特殊的 字面表示格式。 字符数组初始化的方法也和一维数组相同。 例:char s[5]={‘1’,’2’,’3’,’4’,’5’}; char s[5]={‘1’,’2’}; char s[]={‘1’,’2’,’3’,’4’,’5’}; 初始化时没有赋值的元素值为空是编码为0的字符,叫 空字符,用’\0’表示。它即不是空格字符(32), 也不是0字符(48)。 6.3 字符数组和字符串
6.3字符数组和字符串 6.3.2字符串 C语言中用双引号”括起来的任意字符序列,就是字符串 C语言中,顺序书写的两个字符串中间仅由空格、换行符或制表符 分隔,编译时,自动将这些字符串连接成一个长的字符串。 字符串里不能直接出现双引号”(被认为是结束符),需用换意 序列“”表示双引号字符” 对程序中的字符串字面量,系统用字符数组方式保存,连续、顺 序存放每一个字符,最后加一个空字符“)0做结束标志 结束标志“0是字符数组与字符串的区别。 讨论程序中为什么需要字符串的结束标志? 讨论C语言表示字符串长度的方法
6.3.2 字符串 C语言中用双引号”括起来的任意字符序列,就是字符串。 C语言中,顺序书写的两个字符串中间仅由空格、换行符或制表符 分隔,编译时,自动将这些字符串连接成一个长的字符串。 字符串里不能直接出现双引号”(被认为是结束符),需用换意 序列“\””表示双引号字符” 对程序中的字符串字面量,系统用字符数组方式保存,连续、顺 序存放每一个字符,最后加一个空字符“\0”做结束标志。 结束标志“\0”是字符数组与字符串的区别。 讨论程序中为什么需要字符串的结束标志? 讨论C语言表示字符串长度的方法 6.3 字符数组和字符串
6.3字符数组和字符串 6.3.2字符串 C语言中没有字串变量通过字符数组可以实现相关的功能,字 当要用字符数组存储(可能变化的)字符串时,应考虑 (1)定义变量时,考虑可能存储的最长字符串的长度 (2)在字符数组中顺序存放字符串的每一个字符,最后加上 0 (3)对字符数组初值赋值方法的扩充,例: char str[]=“hina”; char str[]={ China”} char str[10]=[China? char str[5]=morning 字符串操作中,要注意控制不要超出字符数组的空间限制
6.3.2 字符串 C语言中没有字符串变量,通过字符数组可以实现相关的功能,字 符串是字符数组最普通的具体应用。 当要用字符数组存储(可能变化的)字符串时,应考虑: (1)定义变量时,考虑可能存储的最长字符串的长度。 (2)在字符数组中顺序存放字符串的每一个字符,最后加上 “\0”。 (3)对字符数组初值赋值方法的扩充,例: char str[]= “China”; char str[]={“China”}; char str[10]={“China”}; char str[5]=“morning!”; 字符串操作中,要注意控制不要超出字符数组的空间限制。 6.3 字符数组和字符串