第2讲二级指针与二维数组课件.ppt

上传人:牧羊曲112 文档编号:2108920 上传时间:2023-01-11 格式:PPT 页数:17 大小:139.97KB
返回 下载 相关 举报
第2讲二级指针与二维数组课件.ppt_第1页
第1页 / 共17页
第2讲二级指针与二维数组课件.ppt_第2页
第2页 / 共17页
第2讲二级指针与二维数组课件.ppt_第3页
第3页 / 共17页
第2讲二级指针与二维数组课件.ppt_第4页
第4页 / 共17页
第2讲二级指针与二维数组课件.ppt_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《第2讲二级指针与二维数组课件.ppt》由会员分享,可在线阅读,更多相关《第2讲二级指针与二维数组课件.ppt(17页珍藏版)》请在三一办公上搜索。

1、二级指针与二维数组,二级指针与二维数组,7.9 指向指针的指针,1.指向指针的指针的定义、赋值及引用如果一个指针变量存放的是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量,简称为“二级指针”变量,其定义的一般格式如下:基类型名*(指针变量名);例如:int i=10;int*p=,7.9 指向指针的指针 1.指向指针的指针的定义、赋值及引,下列程序段的输出结果是()int*pp,*p,a=10,b=20;pp=A)10,20 B)20,10 C)20,20 D)10,10,下列程序段的输出结果是(),7.7 指向二维数组的指针,7.7.1 二维数组的地址C语言中,二维数组可以看成由

2、多个一维数组组成。例如:int a34=0,1,2,3,4,5,6,7,8,9,10,11;可以按下面的方式来看待数组a:二维数组a可以看成是由a0、a1、a2三个元素组成的一维数组,a是它的数组名。a0、a1和a2又都是一维数组,它们的数组名分别叫a0、a1和a2。由于数组名是指针,所以a0、a1和a2 为一级指针,它们的基类型是int。a是是由三个一级指针组成的数组。,a与a0的区别?a+1与a0+1区别?,7.7 指向二维数组的指针 7.7.1 二维数组的地址a与a,a+1跨过了二维数组的一行,所以,a、a+1和a+2称为行地址。相对于a0而言,a0+1只跨过了二维数组的一个元素,所以将

3、a0、a0+1、a0+2等称为列地址。,a+1跨过了二维数组的一行,所以,a、a+1和a+2称为行地,通过以上分析可以看出:(1)a+i是第i行的地址,所以,*(a+i)即为ai。这样,aij 等价于(*(a+i)j。(2)ai+j是第i行第j列元素的地址,所以,*(ai+j)等价于aij。将ai用*(a+i)替换得:*(*(a+i)+j)也等价于aij。上述等价关系总结如下:aij(*(a+i)j*(ai+j)*(*(a+i)+j),通过以上分析可以看出:,用二级指针访问二级数组,#include#define N 2#define M 3int main(void)static int a

4、NM=1,2,3,4,5,6;int*arrN=a0,a1;int i,j,*p=arr;for(i=0;iM;i+)printf(%d,*(*p+i);printf(n);,for(j=0;jN;j+)for(i=0;iM;i+)printf(%d,*(*(p+j)+i);printf(n);return 0;运行结果如下:1 2 31 2 3 4 5 6,用二级指针访问二级数组#include,二维数组a123456a00a01a0,7.7.2 指向二维数组行的指针变量,也就是定义指向二维数组行的指针变量。例如,对二维数组a34,可用如下格式定义指向行的指针变量:int(*p)4;其中,4

5、表示二维数组列的大小对行指针进行赋值时只能赋行地址。例如:int a34=0,1,2,3,4,5,6,7,8,9,10,11;int(*p)4;p=a;或 p=,7.7.2 指向二维数组行的指针变量也就是定义指向二维数组行,若有定义语句int(*p)4;,则以下说法正确的是()A)定义语句非法B)p是一个指针数组,每个元素是一个指向整型变量的指针变量C)p是一个行指针变量,可以将每行具有四个整型元素的二维数组名赋给它D)p是一个指向整型变量的指针变量,若有定义语句int(*p)4;,则以下说法正确的是(,设有程序段:int a23,(*pa)3,x;pa=a;则以下对数组元素的引用,错误的是(

6、)A)x=*(a0+2);B)x=*pa2;C)x=pa00;D)x=*(pa1+2);,设有程序段:,7.6 指针数组,一维指针数组的定义格式如下:基类型*指针变量名数组长度;例如:int*p3,i=1,j=2,k=3;p0=,数组元素是指针,7.6 指针数组一维指针数组的定义格式如下:数组元素是指针,若有定义语句:char*name=JAME,XML,C+;,则语句printf(%sn,name2);的输出结果是()A)JAME B)XML C)C+D)不定值,若有定义语句:char*name=JAME,【例7-14】对参加北京奥运会的国家名称按由小到大的顺序排序后输出。,采用两种方法来实

7、现,并比较它们的优劣,以便体会到采用指针的好处。数组法与指针法,【例7-14】对参加北京奥运会的国家名称按由小到大的顺序排序,#include#include#define N 4#define LEN 20void main()int i,j;char tempLEN,nameNLEN=“China”,”America”,”Australia”,”Japan”;for(i=1;i0strcpy(temp,namej);strcpy(namej,namej+1);strcpy(namej+1,temp);for(i=0;iN;i+)printf(%sn,namei);,#include,#include#include#define N 4void main()int i,j;char*temp,*nameN=China,America,Australia,Japan;for(i=1;i0temp=namej;namej=namej+1;namej+1=temp;for(i=0;iN;i+)printf(%sn,namei);,移动指针,#include 移动指针,第2讲二级指针与二维数组课件,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号