教学课件 C语言程序设计案例教程-王明福.ppt

教学课件 C语言程序设计案例教程-王明福.ppt

  1. 1、本文档共346页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.2 指针变量 9.2.3 指针变量的引用 指针变量的引用包括给指针变量赋值,通过指针变量引用存储单元和移动指针。 指针变量有两种运算:“”、“*”。 1. 取地址运算符“” 赋值语句: px = x ; 就是通过取地址运算符‘’,把变量x的地址赋给指针变量px的,也就是使px指向x。于是就可以通过px间接访问x了。我们可以用图形象地表示出来。 9.2 指针变量 2. 取内容运算符“*” 取指针变量所指变量的值,又称间接访问运算符。例如,px指向x后,就可以通过px间接访问它所指向的变量x了。*px就等价于x,所以,以下两条赋值语句: *px = 10; x = 10; 是等价的,都是将10赋给x。同样,下两条语句: printf(x=%d \n, x ); printf(*px=%d \n, *px ); 直接和间接方式输出变量x的值,因此,输出结果都是10。 9.2 指针变量 3.变量的存取方式 直接访问 在计算机内,对变量的访问其实是通过存储单元的地址进行的,比如,当机器执行语句 printf(%d,x); 时,机器先找到变量x的地址(即0x2000),然后从 0x2000、0x2001这两个地址所对应的存储单元中的数据10(即变量x的值)取出,然后再输出。前面对变量的存取操作都是这种访问方式进行的。 (2) 间接访问 假设px是整型指针变量,它被分配到0x2018、0x2019单元,其值可以通过赋值语句“px=x;”得到。此时,指针变量px的值就是变量x在内存中的起始地址0x2000 9.3 用指针处理数组 9.3.1 数组的指针和指向数组的指针变量 1.数组的指针 数组的指针是指数组在内存中的起始地址,数组元素的指针是数组元素在内存中的起始地址。 例如,int data[6]; 则C语言规定: (1) 数组名data是指针常量,它代表的是数组的首地址,也就是数组第一个分量data[0]元素的首地址。 (2) data+i 就是data[i]的首地址(i=0,1,2,…,5),即data+i与data[i]等价。与简单变量类似,数组元素data[i]的首地址data[i]就称data[i] 的指针。因为地址就是指针,所以data+i又称为指向data[i]的指针,简称为data+i指向data[i]。 (3) 可以用*data、*(data+1)、*(data+2)、…、*(data+5)方式引用数组元素,如图9-9(a)所示。以下两循环输出语句完全等价。 9.3 用指针处理数组 9.3.1 数组的指针和指向数组的指针变量 9.3 用指针处理数组 2.指向数组的指针变量 类似于指向变量的指针。例如: int data[6]; /* 定义data为整型数据的数组*/ int *p,*q; /* 定义p,q为指向整型变量的指针*/ 则语句: p = data[0]; (或p = data;) /* p指向data数组的第0号元素*/ q = data[i]; /* q指向data数组的第i号元素*/ 9.3 用指针处理数组 3. 指向数组的指针变量,在使用中应注意的问题 (1) 几种指针运算形式 ① *p++等价于*(p++),作用是先得到p所指向的变量的值(即*p),然后再使p加1。 ② *(p++)与*(++p)作用不同,前者是先取*p的值,后使p加1;后者是先使p加1,再取*p的值。若p初值为data[0],输出*(p++)时,得data[0]的值,而输出*(++p),则得到data[1]的值。 (2) (*p)++表示p所指向的元素值加1,注意是元素值加1。比如,如果p所指向的元素为data[3],且data[3]的值为9,则(*p)++表示将data[3]单元中的值加1,变成10,而p仍指向元素data[3],也就是说,p中的地址值并没有改变。 (3) p±n:将指针从当前位置前进(+n)或回退(-n)n个元素,而不是n个字节。显然,p ++、p --(或++ p、-- p)是p±n的特例(n=1)。 (4) p2-p1表示两指针之间的数组元素个数,而不是指针的地址之差,见图910-10(a)。 9.3 用指针处理数组 (5) 两指针之间可进行关系运算,如果p1指向data[i],p2指向data[j],并且ij,则p1p2为“真”,反之亦然,即图9-10(b)中,p1p2为真。 图9-10 指针减法、关系运算 8.2 结构体数组 8.2.1 结构体数组的定义 结构体数组的定义与结构体变量类似,只是

文档评论(0)

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

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

1亿VIP精品文档

相关文档