《(56)--8.4 指针与二维数组.ppt》由会员分享,可在线阅读,更多相关《(56)--8.4 指针与二维数组.ppt(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、8.4 指指针与二与二维数数组对于二维数组:(1)a是数组名,包含三个元素 a0,a1,a2(2)每个元素ai 又是一个一维 数组,包含4个 元素int a34;*(*(a+0)+1)*(a0+1)200020022008201020162018a00a01a10a11a20a21a02a03a12a13a22a23aa+1a+2a0a1a2200020082016a0+1a1+1a2+1*(a+0)+1*(a+1)+1*(a+2)+1指针和二维数组的关系行指针与列指针对二二维数数组int a34;有有a-二二维数数组的首地址,即的首地址,即第第0 0行行的首地址的首地址a+i&ai-第第i行
2、行的首地址的首地址int a34;a0a1a2200020082016200020022008201020162018a00a01a10a11a20a21a02a03a12a13a22a23aa+1a+2指针和二维数组的关系ai *(a+i)&ai0-第第i行行第第0 0列列的元素地址的元素地址ai+j *(a+i)+j-第第i行第行第j列列的元素地址的元素地址*(ai+j)*(*(a+i)+j)aij第第i行第行第j列元素列元素本身本身案例案例1:写出程序运行结果:写出程序运行结果#include int main()static int a34=1,3,5,7,9,11,13,15,17,
3、19,21,23;int*p;for(p=a0;pa0+3;p+)if(p-a0)%4=0)printf(n);printf(%4d ,*p);return 0;int a34;a00a01a10a11a20a21a02a03a12a13a22a23p指针与二维数组C语言输出出结果:果:1 3 5p=a;pa+2;p+指向指向一一维数数组的指的指针变量量定定义形式:形式:数据数据类型型(*指指针名名)一一维数数组维数数;例例int (*p)4;()()不能少不能少int(*p)4与与int*p4不同不同p的值是一维数组的首地址,p是行指针u可让可让p指向二维数组指向二维数组某一行某一行 如如
4、int a34,(*p)4=a;一维数组指针变量维数和一维数组指针变量维数和二维数组二维数组列下标相同列下标相同C语言二维数组中的指针变量指针与二维数组案例案例2:#include int main()static int a34=1,3,5,7,9,11,13,15,17,19,21,23;int(*p)4;for(p=a;pa+3;p+)printf(%d,*(*p+0);printf(n);return 0;int a34;a00a01a10a11a20a21a02a03a12a13a22a23ppp p00C语言输出出结果:果:1 9 17指针与二维数组案例3:输入n(n在2到20之间
5、)学生三门课成绩,分别输出 每位学生三门课的平均分。C语言指针与二维数组二维数组中的指针变量应用举例程序分析:存储n个学生的3门课成绩,用二维数组a203;一个指向一维数组的指针变量指向每位学生的成绩;累加求每位学生三门课程成绩和并求平均分。#include int main()float a203,(*p)3,s;int i,j,n;p=a;printf(请输入学生人数:请输入学生人数:);scanf(%d,&n);printf(请输入每位学生的请输入每位学生的3门课成绩门课成绩:n);for(i=0;in;i+)for(j=0;j3;j+)scanf(%f,*(p+i)+j);for(p=a,i=1;pa+n;p+,i+)s=0;for(j=0;j3;j+)s=s+*(*p+j);printf(第第%d位学生平均分是位学生平均分是%6.2fn,i,s/3);return 0;指向一指向一维数数组的的指指针变量,量,行指行指针每个数每个数组元素元素的地址的地址p指向每行的起始指向每行的起始地址,即每位学地址,即每位学生第一生第一门成成绩的的位置位置每个数每个数组元素即元素即每位学生的每每位学生的每门成成绩1.指针与二维数组二维数组的指针表示行指针和列指针指向一维数组的指针(行指针)
限制150内