c语言 二维数组与指针 教案_c语言指针和二维数组

2020-02-27 教案模板 下载本文

c语言 二维数组与指针 教案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言指针和二维数组”。

讲授

9.6二维数组和指针

2课时

掌握二维数组的地址表示方法 掌握指向数组元素的指针变量

掌握指向数组元素的指针变量

掌握用指向由m个元素组成的一维数组的指针变量

指向一维数组的指针变量

作业见后一、二维数组的地址

例:定义二维数组int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};

则二维数组a是数组的数组,由3个一维数组所组成的,即3个元素:a[0],a[1],a[2]。而每个元素又是一个一维数组。

二、指向二维数组元素的指针变量

1、指向数组元素的指针变量

例1 用指向元素的指针变量输出二维数组元素的值 #include void main()

{ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int *p;

for(p=a[0];p

{if((p-a[0])%4==0)printf(″\n″);

printf(″%4d″,*p); }

}用指向由m个元素组成的一维数组的指针变量

例2 输出二维数组任一行任一列元素的值 #include void main(){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int(*p)[4],i,j;

p=a;

scanf(“i=%d,j=%d”,&i,&j);

printf(“a[%d,%d]=%d\n”,i,j,*(*(p+i)+j)); } 注意:

指向一维数组的指针变量的定义格式应写成:基类型(*p)[N] 上述语句int(*p)[4],代表p是一个指针变量,它指向包含4个整型元素的一维数组。*p两侧的小括号不可少,如果写成*p[4],由于[]运算级别高于*,*p[4]是指针数组。

p=a;表明p指向数组a中的第0行,此时p+1不是指向a[0][1],而是指向a[1],p的增值以一维数组的长度为单位,p+1地址就增加了8个字节。*(p+i)+j是a[i][j]的地址,这里的i是以一维数组的长度为单位,j则是以数组元素的长度为单位的。

复习

新授

讲授

复习默写

1、选择排序的基本思想

2、从键盘输入5个整数,使用选择法从小到大排序,编程实现。

一、二维数组的地址

例:定义二维数组int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};

则二维数组a是数组的数组,由3个一维数组所组成的,即3个元素:a[0],a[1],a[2]。而每个元素又是一个一维数组。设二维数组的首行的首地址为2000,则:

二、指向二维数组元素的指针变量

1、指向数组元素的指针变量

例1 用指向元素的指针变量输出二维数组元素的值

#include void main()

{ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int *p;

for(p=a[0];p

{if((p-a[0])%4==0)printf(″\n″);

printf(″%4d″,*p); }

注意:上例中如果对p赋值p=a[0];不能写成 p=a;因为此时a 是行指针,而p是列指针只能指向一个整型变量,a[0]是第0行的数组名,即第0行的首地址就是a[0][0]的地址。请学生思考上述赋值语句还可以写成什么? p=*a;p=&a[0][0];用指向由m个元素组成的一维数组的指针变量 例2 输出二维数组任一行任一列元素的值 #include void main(){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int(*p)[4],i,j;

p=a;

scanf(“i=%d,j=%d”,&i,&j); printf(“a[%d,%d]=%d\n”,i,j,*(*(p+i)+j)); }

注意:

指向一维数组的指针变量的定义格式应写成:基类型(*p)[N] 上述语句int(*p)[4],代表p是一个指针变量,它指向包含4个整型元素的一维数组。*p两侧的小括号不可少,如果写成*p[4],由于[]运算级别高于*,*p[4]是指针数组。

小结

作业

p=a;表明p指向数组a中的第0行,此时p+1不是指向a[0][1],而是指向a[1],p的增值以一维数组的长度为单位,p+1地址就增加了8个字节。*(p+i)+j是a[i][j]的地址,这里的i是以一维数组的长度为单位,j则是以数组元素的长度为单位的。

例3:

int(*t)[4],a[3][4]={{1,3,5,7}, {11,13,15,17},{21,23,25,27}};t = a;printf(“%d,%d”, **t, t[1][2]);t++;t++;printf(“%d”, **t);

运行结果:1,1521

【课堂小练习】

1、[2010.3.27]若有:int(*p)[3];则正确的是(D)A)定义了基类型为int的三个指针变量

B)p是基类型为int的具有三个元素的指针数组 C)定义了名为*p,具有三个元素的整型数组

D)定义了一个名为p的指针变量,它可以指向每行有三个整数元素的二维数组

2、输入:1 2 3,则输出结果是 int a[3][2]={0},(*p)[2],i,j;p=a;for(i=0;i

1、二维数组的地址

2、指向数组元素的指针变量

3、指向一维数组的指针变量

1、整理课堂笔记

2、完成深入研究整型指针练习题

《c语言 二维数组与指针 教案.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
c语言 二维数组与指针 教案
点击下载文档
相关专题 c语言指针和二维数组 数组 指针 教案 c语言指针和二维数组 数组 指针 教案
[教案模板]相关推荐
    [教案模板]热门文章
      下载全文