C语言中指针的考点.doc

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

考点一 变量的地址和指针 地址和指针的定义 内存地址: 计算机的内存是以字节为单位的一片连续的存储空间,每个字节都有一个编号,这个编号就称为内存地址。一般情况下,在程序中只需指出变量名,无须知道每个变量在内存中的具体地址。程序中对变量惊喜存取操作,实际上也就是对某个地址的存储单元进行操作。 指针变量: 在C语言中,可以定义一种特殊的变量,这种变量知识用来存放内存地址的,这种用来存放地址的变量叫做指针变量。例如:将变量a的内存地址保存在变量d中,这时访问变量啊,可以先找到存放地址的d,从中读出a的地址再去访问a。 指针变量的定义和指针变量的基类型 (1)指针变量的定义: 格式 类型名 *指针变量名1,指针变量名2……; 例如: int*p1,*p2; (2)指针变量的基本类型:一个指针变量中存放的是一个存储单元的地址,对于基类型不同的指针变量,其内容增1、减1所跨越的字节数是不同的,因此在定义指针变量时必须区分基类型。 考点二 指针变量的操作 给指针变量赋地址值 (1)通过求址运算符“”获得地址值 例如: int k=1,*p;*p=k;注意(求址运算符“”只能用于变量和数组元素,不可用于表达式、常量或被说明为register的变量,必须放在运算对象的左边,而且运算对象的类型必须与指针变量的基类型相同)。 (2)可以通过赋值运算,把一个指针变量中的地址赋给另一个指针变量,当进行赋值运算时,两边的指针变量的类型必须相同。 (3)通过标准函数获得地址值 :可以通过调用库函数malloc和calloc在内存中开辟动态存储单元,并把所开辟的动态存储单元的地址赋给指针变量。 给指针变量赋空值 NULL是在stdio.h头文件中定义的预定义符。NULL的代码值为0,可以给指针变量赋NULL值,例如:p=NULL;此时p为空指针。它等价于:p=’\0’;或p=0;这时,指针p并不是指向地址为0的存储单元,而是有一个确定的值 “空”。 对指针变量的操作 通过指针来引用一个存储单元: C语言提供了一个间接访问运算符 *,又称为间址运算符,它是一个单目运算符。当指针变量中存放了一个确切的地址值时,就可以用间址运算符通过指针来引用该地址的存储单元。 移动指针:是指对指针变量加上活减去一个整数或通过赋值运算使指针变量指向相邻的存储单元,因此,只有当指针指向一串连续的存储单元时,指针的移动才有意义。当指针指向一串连续的存储单元时,可以对指针变量进行加上或减去一个整数的运算,也可以对指向同一串连续存储单元的两个指针进行相减的运算。例如: main() {int a[10]; int *p,i; for(i=0;i10;i++) scanf(“%d”,a[i]); printf(“\n”); for(p=a;p(a+10);p++) printf(“%d”,*p); } 在程序的最后一个循环语句中,用指针变量p指向数组a,每执行一次for循环,都使指针变量p指向下一个数组元素,再通过*p输出数组中的每一个元素。(因为a是一个数组名,它是一个常量(地址),所以它不能自加,于是将a赋给指针变量p,p作为一个变量才可以自加) (3)指针的比较:在关系表达式中可以对两个指针进行比较,通常两个或多个指针指向同一数组(如一串连续的存储单元)时,指向前面元素的指针变量小于指向后面元素的指针变量。如果定义一个函数的类型为指针类型,那么函数最后将返回一个地址值。

文档评论(0)

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

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

1亿VIP精品文档

相关文档