【C语言】第十七章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C 语言第十七章 我们学过一维数组、多维数组,这节课,就将它们与指针有效的结合在一起学习。 17.1 指针与数组 17.1.1 指针与数组 17.1.2 数组名作为指针 17.1.3 指针与多维数组 17.1.4 指针与数组参数 17.1.1 指针与数组 指针用于存储地址,他和数组名紧密的联系在一起。 下图就显示了一个数组名称为grade,包含5个整型数据的一维数组,这里每个整型元素占用4个字节。 17.1.1 指针与数组 访问数组元素,我们可以使用下标来实现,比如我们要访问数组元素grade[3],在之前的章节里我们详细的讲解过,但是那时使用的方法其实隐藏了数组每一个元素的地址。根据之前讲过的地址的概念,加之我们已知的数组的特点,这个特点就是数组在内存总占用一块连续的存储区域,这样的话,如果我们知道数组的首地址,针对grade这个数组,就是已知grade[0]的地址,我们就可以通过增减偏移量,得到garde[3]的地址,从而访问到garde[3]的元素值。 17.1.1 指针与数组 grade[3]=grade[0] + 3 * 4 上面表达式的含义是gradep[3]的地址等于grade[0]地址加上12。写成以下的通式: 数组中下标为N元素的地址 = 数组的首地址 + N * sizeof(DataType) 例如: int grade[5]; /*定义grade为包含5个整型数据的数组*/ int *p; /*定义p为指向整型变量的指针变量*/ p=grade[0]; 17.1.1 指针与数组 【范例17-1】 使用指针访问数组元素,分别使用下标和指针访问数组元素 01 #include stdio.h 02 int main(void) 03 { 04 int i; 05 int grade[]={2,5,9,4,6}; 06 int *p; 07 p=grade[0]; /*指针指向*/ 08 printf(使用下标访问数组元素:\n); 09 for(i=0;i5;i++) /*下标访问*/ 10 printf(数组grade的第%d个元素是%d\n,i,grade[i]); 11 printf(使用数组指针访问数组元素:\n); 12 for(i=0;i5;i++) /*指针访问*/ 13 printf(数组grade的第%d个元素是%d\n,i,*(p+i)); 14 return 0; 15 } 17.1.1 指针与数组 数组元素 下标符号 指针符号 元素0 grade[0] *p 元素1 grade[1] *(p+1) 元素2 grade[2] *(p+2) 元素3 grade[3] *(p+3) 元素4 grade[4] *(p+4) 需要注意的是*(p+i)表达式中的括号是必须有的,不能省略,如果我们遗漏了小括号,将变成这样的表达式*p+i,它的含义之前在指针变量处已经进行了讲解,是在p所指向的存储单元的数值基础上在i,因为我们始终没有改变指针p的指向。 17.1.2 数组名作为指针 每个创建的数组,数组名就成为编译器为这个数组所创建的指针常量名称,存储的是数组第一个元素的起始地址,也是我们所说的数组首地址。这样,我们就有多了一种获取数组元素地址的手段。如【范例17-1】中代码“p=grade[0];”就可以改写为“p=grade;”。 17.1.2 数组名作为指针 【范例17-2】 使用数组名作为指针访问数组元素。 01 #include stdio.h 02 int main(void) 03 { 04 int i; 05 int grade[]={2,5,9,4,6}; 06 int *p; 07 p=grade; /*指针赋值*/ 08 printf(使用数组名访问数组元素:\n); 09 for(i=0;i5;i++) /*使用数组名*/ 10 printf(数组grade的第%d个元素是%d\n,i,*(grade+i)); 11 printf(使用数组指针访问数组元素:\n); 12 for(i=0;i5;i++) /*使用指针变量*/ 13 printf(数组grade的第%d个元素是%d\n,i,*(p+i)); 14 return 0; 15 } 17.1.2 数组名作为指针 下面的代码大家一起来分析一下,看看错了吗? grade = grade+3; 结果是有误。原因是,grade是数组

文档评论(0)

好文精选 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档