荆州职业技术学院C语言程序设计 课程教案.docVIP

荆州职业技术学院C语言程序设计 课程教案.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
荆 州 职 业 技 术 学 院 C语言程序设计 课 程 教 案 教 学 课 题 数组的指针和指向数组的指针变量 学 时 2 教 学 目 的 了解数组的指针和指向数组的指针变量 教 材 分 析 重 点 数组的指针和指向数组的指针变量 难 点 数组的指针和指向数组的指针变量 教学方法 讲授 教学手段 课件讲解 教 学 过 程 及 时 间 分 配 1.数组的指针和数组元素的指针变量(25分钟) 2.利用指针变量引用数组元素(35分钟) 3.指向多维数组的指针和指针变量(25分钟) 4.小节(5分钟) 荆 州 职 业 技 术 学 院 信 息 技 术 系 软 件 教 研 室 9.3 数组的指针和指向数组的指针变量 指针和数组有着特殊的关系。 一个数组在内存中占据连续的内存单元。数组名为此 连续内存单元的首地址。一个数组元素也可以占据几个连续的内存单元(取决于数组元素的数据类型)。一个数组元素的首地址也是指它所占有的几个内存单元的首地 址。 9.3.1 数组的指针和数组元素的指针变量 不带方括号的数组名就是该数组的指针,它指向其第1个元素。 int data[5]; data就是第1个数组元素的地址。 但必须注意,数组名是常量,因此,对数组名不能当作指针变量使用。例如:像data++、data和data=a之类的表达式都是非法的。 int data[5],*p_data; p_data=data; 这种赋值方式等价于: p_data=data[0]; 9.3.2 利用指针变量引用数组元素 在程序中通过下标引用数组元素,经过C编译之后,下标值的计算就变为“基址+位移”的计算,而引用元素的值就变为间接存取对应单元的内容。 data[0] 就等价于*(data+0),data[1]就等价于 *(data+1),…。 int *p=data; p的值就表示数组data的基址,而(p+i)实现“基址+位移”的运算,其值恰好是数组data第i个元素的地址,即data[i]。 例如: 输出数组的全部元素。 有三种方法: ① 下标法。 main() { int a[10],i; for(i=0;i10;i++) scanf(“%d”,a[i]); printf(“\n”); for(i=0;i10;i++) printf(“%d”,a[i]);} ② 通过数组名计算数组元素的地址,找出元素的值。 main() { int a[10],i; for(i=0;i10;i++) scanf(“%d”,a[i]); printf(“\n”); for(i=0;i10;i++) printf(“%d”,*(a+i));} ③ 用指针变量指向数组元素。 main() { int a[10],i,*p; for(i=0;i10;i++) scanf(“%d”,a[i]); printf(“\n”); for(p=a;p(a+10);p++) printf(“%d”,*p);} 9.3.3 指向多维数组的指针和指针变量 1 .多维数组的地址表示 不管内存空间多大,内存单元的地址都是一维的。在C语言中,数组不管是一维的还是多维的,都占用一片连续的内存空间。 static int num[4][3]={{1,3,5},{2,4,6},{13,16,19},{8,18,28}}; 如下图所示,可以把数组num看成是“一维数组”,它包含4个元素,各代表数组的一行;上述每个元素又是一个一维数组,各包含3个元素,即3个列元素,每个列元素是一个整数。 数组名总是代表整个数组的起始地址,即:该数组第1个元素的地址。num+i就代表第i行的首地址,也就是num[i]的地址(注意:不是num[i]本身)。 num[0]、num[1]、num[2]和num[3] 就分别是num数组的第0行数组名、第1行数组名、第2行数组名和第3行数组名,从而它们就分别代表各个“行数组”的首地址,亦即各行第0列元素的地址。 num[i]+j 就表示该行数组第j列元素的地址。 2. 指向基本数组元素的指针变量 利用指向数组元素的指针变量访问二维数组的各个元素,并按逆序输出各元素的值。 #include stdio.h void main() { int a[10][10],i,j,*p,n; for( i=0;i<10;i++) for( j=0;j<10;j++) *(*(a+i )+j)=i*10+j; n=0; for( p=a[9][9]

文档评论(0)

飞扬的岁月 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档