C语言教学 第12章.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言教学 第12章

《ASP.NET 3.5网站开发从入门到精通》 第12章 指针的深入研究——指针进阶 第12章 指针的深入研究——指针进阶 第12章 指针的深入研究——指针进阶 第12章 指针的深入研究——指针进阶 第12章 指针的深入研究——指针进阶 12.1 指针与数组 12.1.1 指针与数组 12.1.2 数组名作为指针 12.1.3 指针与多维数组 12.1.4 指针与数组参数 12.1.1 指针与数组 指针用于存储地址,他和数组名紧密的联系在一起。 下图就显示了一个数组名称为grade,包含5个整型数据的一维数组,这里每个整型元素占用4个字节。 12.1.1 指针与数组 访问数组元素,我们可以使用下标来实现,比如我们要访问数组元素grade[3],在之前的章节里我们详细的讲解过,但是那时使用的方法其实隐藏了数组每一个元素的地址。根据之前讲过的地址的概念,加之我们已知的数组的特点,这个特点就是数组在内存总占用一块连续的存储区域,这样的话,如果我们知道数组的首地址,针对grade这个数组,就是已知grade[0]的地址,我们就可以通过增减偏移量,得到garde[3]的地址,从而访问到garde[3]的元素值 12.1.1 指针与数组 grade[3]=grade[0] + 3 * 4 上面表达式的含义是gradep[3]的地址等于grade[0]地址加上12。写成以下的通式: 数组中下标为N元素的地址 = 数组的首地址 + N * sizeof(DataType) 例如: int grade[5]; /*定义array为包含5个整型数据的数组*/ int *p; /*定义p为指向整型变量的指针变量*/ p=grade[0]; 12.1.1 指针与数组 【范例12-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 } 12.1.1 指针与数组 12.1.2 数组名作为指针 每个创建的数组,数组名就成为编译器为这个数组所创建的指针常量名称,存储的是数组第一个元素的起始地址,也是我们所说的数组首地址。这样,我们就有多了一种获取数组元素地址的手段。如【范例12-1】中代码“p=grade[0];”就可以改写为“p=grade;”。 12.1.2 数组名作为指针 【范例12-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 } 12.1.2 数组名作为指针 面的代码大家一起来分析一下,看看错了吗? grade = grade+3; 结果是有误。原因是,grade是数组名,它是编译器为这个数组创建的指针常量,常量当然是不能够再赋值的。再看下面的代码,是否有问题? p = grade; p = p+3; 结果是正确的。原因是,p是指针变量,它初始值是grade数组的首地址,之后根据需要修改了p的值,也就是改变了指针变量p的指向。 12.1.2 数组名作为指针 【范例12-3】

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档