网站大量收购独家精品文档,联系QQ:2885784924

C语言程序设计(第二版) 教学课件 作者 刘加海 朱云其 第九章.ppt

C语言程序设计(第二版) 教学课件 作者 刘加海 朱云其 第九章.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Company Logo LOGO 第9章 指针与数组 本章重点 § 指针的概念与指针赋值 § 指针变量对一维数组元素的引用方法 § 指针变量对字符串的引用 § 指针数组的概念 本章难点 § 如何用指针变量来表示数组元素及元素的地址 § 指针变量在一维数组中的移动 § 字符指针变量的赋值方法及运用 § 数组指针与指针数组的区别 § 数组指针的理解与应用 9.1 指针的基本概念 变量的值存放在内存中,而内存有一确定的地址。在C语言中,有一种变量用来存放内存的地址,这种变量称为指针变量。 1. 指针变量的定义 定义指针变量的一般形式如下: 类型名 *指针变量名; 例如: int *p1 ,*p2; 注意:类型是指针变量所指的地址上存储内容的类型。 2. 指针变量的赋值 一个指针变量可以通过赋值、初始化、分配内存空间来获得一个确定的地址值,从而指向一个具体的对象。 例如,若有以下定义: int k=1,*q,*p; q=k; /* 指针q指向变量k的地址 */ p=q; /* 指针p指向指针q所指的地址,指针变量p和q都指向了变量k */ 注意:当进行赋值运算时,赋值号两边指针变量的基类型必须相同。 3. 指针变量的间接寻址运算 从指针变量所指的地址上取内容可用运算符“*”。“*”称为间接寻址运算符,其操作数是一个指针变量。 间接寻址运算符形式如下: *指针; 它的功能是获取指针所指存储单元的值。 【例9.1】 定义一个整型变量与一个指向整型数的指针,让指针指向变量的地址,通过从键盘输入一个数给变量,输出指针所指的地址上的内容。 #includestdio.h int main() { int x; int *p; /*定义指针变量p*/ p=x; /*指针变量指向变量x的地址*/ scanf(%d,x); printf(*p=%d\n,*p); /* *p为指针变量p所指的内存上的内容*/ return 0; } 分析:在图9.1中,假定变量x分配在内存2000H地址上,指针变量p分配在内存2500H地址上,从键盘读入100给变量x。由于执行语句p=x;它表示指针p指向变量x的地址,即指针p的值为2000H,而2000H上的内容就是变量x的值100。 p:2000H x:100 内存地址 2000H 2500H 图9.1 p=x的示意图 注意: 1)指针变量名是一个标识符,对它的命名要符合标识符的命名规则。 2)指针变量只能指向同一类型的变量。 3)指针定义时的“*”只是定义说明符,它并不是指针变量名的一部分。例如,在定义指针变量int *p;时,p为指针变量,*p并不表示指针,而表示指针变量p所指地址上的内容。 int x, *p=x; 能否把此语句中的*p理解为指针p取内容运算。如果把此语句中的*p=x;单独写出是否正确? 答:不正确,不能这样理解,此处*表示指针的定义符,而不是取内容运算符,如果写成*p=x是不正确的,因为此时左边*为取内容运算符,右边是变量的地址,应改为p=x才正确。 注意: C语言中有一个特殊的指针值NULL,即全部二进制为0的值。引进NULL 的目的是作为指针的异常事件标志。除了给指针变量赋地址值外,还可以给 指针变量赋NULL值,例如: p = NULL; NULL是在stdio.h头文件中定义的预定义符,因此在使用NULL时,应该在程序的前面出现预定义行:#includestdio.h。NULL的代码值为0,当执行了以上的赋值语句后,称p为空指针。 上机操作与练习1 分析下列程序的运行结果并上机调试: #includestdio.h void f(int *p) { *p=*p+10; } int main() { int x,i; FILE *fp; scanf(%d,x); fp=fopen(k.txt,w); f(x); for(i=0;ix;i++) fprintf(fp,%4d%c%c,i, ,a+(i+x)%26); fclose(fp); return 0

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档