1.首先我们定义一个二维数组 int arr[3] [4];//这表示定义了一个3行4列的二维数组,并且行优先 有以下几种表示二维数组元素的方法: int brr [3] [4] ={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int crr [3] [4] = {1,2,3,4,5,6,7,8,9,10,11,12}; Int err [3][4] = {1,2,3,4,5}; 当表示某一特定元素时,例如2行1列的元素1时,可用以下两种方式来表示 frr [2][1]=1; int hrr[3][4]={0,0,0,0,0,0,0,0,0,1}; int grr[][4]={1,2,3,4,5,6,7,8,9,10};//二维数组中行可以省略,至少写出列,编译器可以推断出来行
//输出crr的内容 for(int i=0;i<3;i++)//遍历行 { for(int j=0;j<4;j++)//遍历列 { printf(“%-3d”,crr[i][j]);//-3表示左对齐 } printf(“\n”); }
2. 一维数组与二维数组的区别 一维数组,如下图: 一维数组数组名表示数组首元素 int arr[5]; arr:int* arr+1: int* arr[0]: 红色格子
二维数组,如下图: int brr[3][4] 数据类型 1.brr: int(*p)[4] //首行的地址 2.brr+1: int(*p)[4]//下一行的地址 3.brr[0]: int* //brr中第0列元素的地址,(brr[0]==arr) 4.brr[0]+1: int*//brr[0][1] 5.brr[0][0]: int
一维数组数组名表示数组首元素,这句话只适用于一维数组,因此我们可以将二维数组看成特殊的一维数组,如第一行,将4个格子看成一个整体,引出两个概念,数组指针和指针数组
1. 数组指针: int (*p)[4]:p是一个指向整型数组的指针,简称数组指针,重点在于一定是个指针,数组起修饰作用 2. 指针数组: int *p[4]:是一个保存指针的数组
总结:当遇到复杂的考虑两点 一.优先级 () >[ ]> * 二.1.若是指针(带*号),则看指向什么东西 2.若指向数组(带[]),则看长度和数据类型 3.若是函数(带小括号()),则看参数列表和访问值
二维数组的地址
[1,0]=[0,4] 表示的是同一个地址
3. 递归 int Age( int n) { int tmp; if(n==1) { return 10; } else tmp=age(n-1)+2; return tmp;
|
|
来自: 昵称29435191 > 《待分类》