第八章 指针.ppt

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

第八章 指针 8.1 变量的地址和指针 内存是以字节为单位的一片连续的存储空间,每一个字节都有一个编号,这个编号就称为内存地址。 若在程序中定义了一个变量,C编译系统就会根据定义中变量的类型,为其分配一定字节数的存储空间,此后,这个变量的内存地址也就确定了。 移动指针 只有当指针指向一串连续的存储单元时,指针的移动才有意义。常和数组配合使用。 int *p.*q; 则p+n、p-n、p++、p--运算都是合法的,但指针移动的具体长度取决于所指基类型的长度。 对指向同一串连续存储单元的两个指针进行相减的运算,表明两指针之间元素的个数。 指针比较 通常两个或多个指针指向同一目标时(如一串连续的存储单元)比较才有意义。 if (pq ) printf(“p points to lower memory than q.\n”); if (p==0 ) printf(“p points to NULL.\n”); 8.5 函数之间地址的传递 指针变量作形参 (1)相应实参是地址表达式,值为某变量地址。 例8.2 (2)实现在函数间传递数据(传址调用,传递的是地址,改变的是内容,实现双向数据传递)。 例8.3 8.4 (3)函数可以返回一个地址值(见例8.5) 本章要点 指针的定义(类型与所指变量类型一致) 指针的赋值(等于一个变量的地址) 两个运算符(和*的用法) 指针的运算(两指针指向连续存储空间(如同一数组)时,可以进行移动、比较、相减运算) 指针传参,可以实现函数间双向数据传递。 * * int a , b; float x ; a b x 1012 1013 1015 1016 1201 1202 1203 1204 1012 p 2002 1012 p 2002 a 1012 1013 用来存放地址的变量就叫做指针变量 使用指针变量分为三步: ①定义指针变量。如 int a,*p; ②赋值,使指针变量指向一个变量。如 p=a; ③用指针变量操作它所指向的变量。如 *p=10; 8.2 指针变量的定义和基类型 相当于a=10; 指针变量的定义 指向基本类型的指针变量定义的一般形式为: 类型 *变量名表; “类型”可以是任一基本数据类型,如int、char、float等。 *号作用于变量名,是定义指向确定类型的指针变量。 如: int *p; char *q; 定义了两个指针变量: p 是指向int型变量的指针变量 q 是指向char型变量的指针变量 一个指针变量只能指向其定义式中所指明的数据类型。 使用类型标识符 void 可以定义不确定类型的指针变量。程序中用类型转换运算符“( )”可将void类型的指针变量强制转换为所需要的类型。 初始化的一般形式是 类型 *变量名=地址表达式; 如: int i,j; int *p1=i, *p2=j; 注意:指针变量有了确定指向,才能参与其他运算。 在程序中不允许使用没有确定指向的指针变量,否则,有可能导致对系统(或程序)的危害。 1. 取变量地址: 如: int i,*p1; p1=i; p1++; 2. 在指针变量定义时对其进行初始化。 8.3 给指针变量赋值 3.给指针变量赋“空值” p=NULL; p=‘\0’; p=0; 4. 通过另一个指针变量获得值 int i,*p,*q; p=i; q=p; 当一个指针指向了一个变量后,就可以用指针访问所指变量了。操作符有:取地址符 , 取内容符* : int i,j; int *p1, *p2; p1=i; p2=j; i=1; *p2=*p1; 8.4 指针变量的操作 两种常见错误: (1)int i,*p; *p=i; //错误,应p=i; *p=10; (2) int i,*p; *p=10; //错误,不允许用没有确定指向的指针变量 (1) 直接访问: 语句中通过变量名i直接对i的存储单元进行存取运算。如: i=1; (2) 间接访问: 通过指针变量p1,先在p1的存储单元中找到i的地址,由此得到i的存储单元,再对i进行存取运算。 例8.1 访问变量的两种方法: 11 a[0] 12 13 14 15 a[1] a[3] a[4] a[2] p q 以指针变量作形参定义一个函数, 交换两个int型变量的值。 程序如下: #includestdio.h void change(int *p1,int *p2) { int z; z=*p1; *p1=*p2; *p2=z; } void main() { int

文档评论(0)

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

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

1亿VIP精品文档

相关文档