二维数组指针字符串.pptVIP

  • 10
  • 0
  • 约1.02万字
  • 约 54页
  • 2020-02-12 发布于未知
  • 举报
二维数组、指针、字符串 数组 数组是由若干相同数据类型的数据所组成的有序集合。 数组的声明 int a[7]; 数组的操作: a[i] 二维数组 二维表 数表(数阵,矩阵) 1 2 3 4 5 6 1.二维数组的定义: 数据类型 数组名[常量表达式][常量表达式] 例: int a[3][4]; 定义了一个3*4(3行4列)的数组。 注意: 不能写成 int a[3,4];的形式。 int a[3,4];定义的是一维数组;数组的标志是[],每一个[]代表一维 C++采用这样的定义方式,使我们可以把二维数组看作是一个特殊的一维数组:它的元素又是一个一维数组。(即把二维数组的每行看作一个元素) 例: int a[3][4]; 可以把a看成一个一维数组,它有3个元素a[0]、a[1]、a[2],每个元素又是含4个元素的一维数组。见下图。 a[0] --- a[0][0],a[0][1],a[0][2],a[0][3] a 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] 此时, a[0]、a[1]、a[2]相当于3个一维数组的名字,上面定义的二维数组可以理解为定义了3个一维数组,即相当于 int a[0] [4],a[1] [4], a[2] [4]; C++的这种处理方法很方便,我们在后面会体会到 C++语言中,二维数组中元素在计算机内存中的存放顺序是:按行存放,即先在内存中存放第一行的元素,再放第二行的元素(第一维变化慢,第二维变化快)。 例:int a[3][4]; 二维数组a在内存中的存放顺序为 a[0][0],a[0][1],a[0][2],a[0][3],[1][0],a[1][1],a[1][2],a[1][3],a[2][0],a[2][1],a[2][2],a[2][3] 2 二维数组元素的引用 数组名[下标][下标] 注意:每维下标从0开始;下标不要超过各维的大小。 例:int a[3][4]; 第1行第2列的元素是a[0][1] (也可说成第1行的第2个元素是a[0][1]) a[2][3]是第3行的第4个元素 a[3][3]违法 3 二维数组的初始化 对于二维数组有下列初始化方法: (1)分行给二维数组赋初值,如: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 这种赋值方法比较直观,把第一对括号内的数值赋给第一行的元素,第二括号内的数值赋给第二行的元素,依此类推。 (2)可以将所有数据写在一个花括号内,这时,计算机自动按数组元素在内存中的排列顺序对各元素赋初值。 例:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; (3)可以只对数组中部分元素初始化。如: int a[3][4]={{1},{5},{9}}; 此处的作用表示:a[0][0]元素被赋成1,a[1][0]元素被赋成5,a[2][0]元素被赋成9,而数组中的其他元素被初始化为0(与一维数组的初始化机制相同) (4)如果对二维数组的全部元素初始化,则定义数组时第一维长度可以省略,但第二维长度不能省,如:分行进行初始化,如: int a[][4]={{0,0,3},{},{0,10}}; char c[10]={‘C’,’p’,’r’,’o’,’g’,’r’,’a’,’m’,’\0’}; 4 二维数组的赋值、输入、输出 使用二重循环,对每个元素赋值、输入和输出: for(int i=0;i3;i++) for (int j=0;j4;j++)//初始化有错误吗? { cina[i][j]; a[i][j]*=a[i] [j]; couta[i][j]endl; } 例题1 矩阵的行列互换 将一个二维数组的行列互换,存到另外一个二维数组中。例如: a= 1 2 3 行列互换后放在数组b中,b= 1 4 4 5 6

文档评论(0)

1亿VIP精品文档

相关文档