二维数组:
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;
转载自原文链接, 如需删除请联系管理员。
原文链接:二维数组,转载请注明来源!