C语言程序设计08(二维数组)解析.ppt
文本预览下载声明
第8章内容 二维数组 二维数组的定义与初始化 二维数组的引用 指向二维数组的指针 二维数组的地址 列指针 行指针 二维数组及其指针作函数参数 二维数组作函数参数 指向二维数组的指针作函数参数 课堂练习1 #include stdio.h void main() { int a[ ]={1,3,5,7,9,11,13,15,17,19}; int i; for(i=0;i=7;i+=2) printf(“%d”,a[i]); } 程序执行过后,输出的结果是什么? 课堂练习1的问题 数组a包含多少个元素?数组元素的下标范围是多少? 程序中的for循环体能被执行几次?循环控制变量i的值是怎样变化的? 在循环过程中,数组a的哪些元素的值被输出了? 课堂练习2 void main ( ) { int n = 10 ; while (n--) printf (%d,--n); } 程序执行过程中,输出的结果是什么? 课堂练习2的问题 n--与--n的区别是什么? 程序中的while循环体能执行几次? 程序执行过后,n的值是多少? 课堂练习3 #include stdio.h void main() { int x=1, a=0, b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++; b++ ; } printf(a=%d, b=%d\n, a, b) ; } 课堂练习3的问题 break的作用是什么? 在switch结构中,用于退出当前分支结构 在循环结构中,用于退出当前层次的循环 8.2 多维数组的概念 在C语言中,若数组元素又是数组,这种数组就是多维数组。 具有相同数据类型的二维表格数据,可以使用二维数组来表示,这种数据结构又称为矩阵。 在C语言中,还可以使用三维或多维数组,但很少出现。 在计算机中,多维数组只是一个逻辑概念,在内存中,多维数组元素的排列顺序“按行优先”存放,其排列顺序为:第一维的下标变化最慢,最右边的下标变化最快。最后形成一个就像一维数组一样的序列。 8.2.1 二维数组的定义 在C语言中,二维数组定义的一般形式为: 数据类型 数组名[整型常量表达式1][整型常量表达式2]; 二维数组的元素个数为 整型常量表达式1×整型常量表达式2 各个元素的下标仍然从0开始 二维数组中的“表达式1”和“表达式2”分别称为数组的行和列。因此,二维数组定义的一般形式又可表达为: 数据类型 数组名[行数][列数]; 二维数组实例 执行 int a[3][4];表示定义了一个3行4列的二维数组,共12个元素,每个元素均是int型数据。 二维数组元素在矩阵中的位置如下: 二维数组可看成若干元素的一维数组 定义二维数组int a[3][4]; 可以看成具有三个元素的一维数组: a[3]=={a[0],a[1],a[2]}; 一维数组的每个元素又是一个一维数组: a[0]:{a[0][0],a[0][1],a[0][2],a[0][3]} a[1]:{a[1][0],a[1][1],a[1][2],a[1][3]} a[2]:{a[2][0],a[2][1],a[2][2],a[2][3]} 即定义:int a[3][4]; 相当于定义: int a[0][4],a[1][4],a[2][4]; 2. 二维数组的存储 在内存中,二维数组元素遵循“按行优先”的原则进行存放。即:先存储第1行各元素,再存储第2行各元素,依此类推。 如定义:int a[3][4]; 则内存中的存储顺序依次为: 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] 二维数组元素在内存中的存储顺序号 如果定义:int a[3][4]; 该数组各元素在内存中是“按行优先”原则依次存放的,也就是说,二维数组的各元素在内存中的存放形式可以看成是一个一维数组。 二维数组下标与对应的一维数组下标可以使用如下公式计算:i*N+j(即:二维数组元素在内存中的存储序号) 其中:N为二维数组定义时给出的列长度,i为二维数组的行下标,j为二维数组的列下标。 二维数组的初始化 二维数组与一维数组一样,可以在定义二维数组时对其各元素进行初始化赋值。 按行赋初值: int a[2][3]=
显示全部