C语言基础 九、指针.docVIP

  1. 1、本文档共23页,可阅读全部内容。
  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语言基础 九、指针

九、指针 本章概述: 本章主要考查指针和地址的概念,指针的定义及使用,指针和一维数组的关系,指针和二维数组的关系,指针和字符串的关系,指向函数的指针及返回值为指针的函数,指针变量作函数的参数,指针数组及指向指针的指针等。 据对最近几年试卷分析得知,本章考核内容所占比例为15%左右,属重点考核内容,需重点理解。 大纲要求: 1.地址与指针变量的概念,地址运算符与间址运算符。 2.一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。 3.用指针作函数参数。 4.返回地址值的函数。 5.指针数组,指向指针的指针。 重点难点: 1.一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。 2.用指针作函数参数。 考点分析: 地址、指针和指针变量 计算机内存是一个连续编码的单元,每个存储单元都有一个固定的编号,这个编号就是地址。在C程序中定义变量,编译系统都会给这个变量分配相应的存储单元,变量的值放置在相应的内存单元中。C语言中的变量就代表了内存中的一些存储单元,该单元的固定编号就是变量的地址,也称为指针,因此变量的地址又称为变量的“指针”。专门用来存放另一个变量的地址的变量,称为指针变量,又称为指向某个变量的指针。 ?在C语言中存在直接存取和间接存取两种访问内存数据的方法。直接存取利用变量名隐式地访问内存:首先定义变量,然后由编译系统完成从变量名到内存地址的映射工作,用户通过变量名访问内存空间,变量地址对用户完全透明。间接存取则通过指针显式地访问内存:用户直接使用变量的地址,或者将变量的地址值存储于指针变量中,然后通过指针变量获取地址值访问内存。 ? 指针变量的定义: 类型名 *指针变量名1,*指针变量名2,……; 如:int *p,*q;,则定义了两个指针变量p和q,p和q分别指向整型变量。但此时p和q并没有指向,若要使其有指向,则需要给它们赋值。 如:int x,y; p=x; q=y; 则p和q分别指向整型变量x和y,即指针变量p和q中分别存放整型变量x和y的地址。 注意:指针变量的类型与它所指向的变量的类型应一致。指针变量中只能存放地址值,不可以将任何非地址类型的数据赋给指针变量。如: p=1000;这种赋值方式是非法的。 地址值可以通过运算符“”获取,地址中所存储的值可以通过运算符“*”间接获取。 (1)取地址运算符“” 使用格式为:变量名,如a表示变量a在内存中的地址。本运算符实现从变量到地址的转化。???? (2)指针运算符“*” 使用格式为:*指针变量名,如*p表示指针变量p所指向的变量的值。本运算符实现从地址到变量的转化。 【特别提醒】:语句int *p;中,指针变量p表示的是地址,而*p表示的是地址中所存放的数据。 试题解析 1.有以下程序 #includestdio.h #includestdlib.h int fun(int n) { int *p; p=(int *)malloc(sizeofi(int))?; *p=n; return *p; } main() { int a; a=fun(10); printf(“%d\n”,a+fun(10)); } 程序的运行结果是( ) [2008年9月 选择题 第31题] A)0 B)10 C)20 D)出错 解析:答案为C。函数调用时,传值10给形参n,而在fun()函数中,指针变量p接收形参的值,并返回所接收的值。所以第一次调用fun函数后,变量a的值为10,加上第二次调用得到的值10,最后的输出结果为20。 2.以下定义语句中正确的是( )[2008年4月 选择题 第15题] A)int a=b=0; B)char A=65+1,b=’b’; C)float a=1,*b=a,*c=b; D)double a=0.0;b=1.1; 解析:答案为B,选项C错在给指针变量c赋值应该直接赋变量地址或指针变量。 3.若在定义语句:int a,b,c,*p=c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )[2007年9月 选择题 第15题] A)scanf(“%d”,a,b,c); B)scanf(“%d%d%d”,a,b,c); C)scanf(“%d”,p); D)scanf(“%d”,p); 解析:答案为C,p为指针变量,其中存放是变量c的地址。 4.设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是(  ) [2007年4月 选择题 第29题] A)float *p=1024;   B

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档