高中信息技术 信息学奥赛C语言第七章 指针课件.ppt

高中信息技术 信息学奥赛C语言第七章 指针课件.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 指针 本章要点 7.1 变量的地址和指针 7.2 指针变量的定义和指针变量的基类型 7.3 给指针变量赋值 7.4 对指针变量的操作 7.5 函数之间地址值的传递 8.1 变量的地址和指针 1.变量及其地址 在C的程序中要定义许多变量,用来保存程序中用到的数据,包括输入的原始数据、加工的中间结果及最终数据。 C编译系统会根据定义中变量的类型,为其分配一定字节数的内存空间(如字符型占1个字节,整型占2字节,实型占4字节,双精度型占8字节等),此后这个变量的地址也就确定了。 变量的地址起到了寻找变量的作用,好象是一个指针指向了变量,所以常把变量的地址称为“指针”。 2.指针变量 若一个变量专用于存放另一个变量的地址(指针),则该变量称为指针变量。 指针的对象:当把变量的地址存入指针变量后, 我们就可以说这个指针指向了该变量。 变量的存取方法:直接存取和间接存取。 直接存取与间接存取 直接存取:按变量地址存取变量值 间接存取:通过存放变量地址的变量去访问变量 在C程序中,变量的地址可以通过运算符“”来得到,该运算符称为“取地址”运算符,它的运算对象是变量或数组元素,得到的结果是变量或数组元素的地址。   例如:int a,b[10];   a: 得到的是变量a的地址   b[5]: 得到的是数组元素b[5]的地址 在C语言中,指针被广泛应用,它和数组、字符串、函数间数据的传递等有着密不可分的联系。 7.2 指针变量 7.2.1 指针变量的定义 7.2.2 给指针变量赋地址值 7.2.3 给指针变量赋“空”值 7.2.1 指针变量的定义 指向指针的指针变量 int **p,*s,k=20; s=k; p=s; 一个指针变量可以通过以下三种方式获得一个确定的地址,从而指向一个具体的对象。 (2)通过指针变量获得地址值   可以通过赋值运算,把一个指针变量中的地址值赋给另一个指针变量,从而使这两个指针变量指向同一地址。例如,若有以上定义,则语句:   p=q;  使指针变量p中也存放了变量k的地址,也就是说指针变量p和q都指向了变量k。  注意:在赋值号两边指针变量的基类型必须相同。 (3)通过标准函数获得地址值   可以通过调用库函数malloc和calloc在内存中开辟动态存储单元,并把所开辟的动态存储单元的地址赋给指针变量。 7.2.3 给指针变量赋“空”值 7.3 对指针的操作 7.3.1 引用存储单元 7.3.2 移动指针 7.3.3 指针比较 7.3.1 引用存储单元   它们都是单目运算符,优先级高于所有的双目运算符,它们的结合性均是自右向左。在使用这两个运算符需要注意以下几点: (1)如果已经执行了“p=a;”语句,若有 *p   由于“”和“*”两个运算符的优先级别相同,但按自右向左方向结合,因此先运算*p,它就是变量a,再执行运算。因此它等同于a。 (2)*a的含义是a。因为先进行a运算,得到a的地址,再进行*运算,即a所向的变量,因此*a等价于a。 (3)(*p)++相当于a++。注意括号是必要的,如果没有括号,就成为*(p++),这时使指针变量本身增1,并不是使p所指的存储单元的值增1。 通过指针引用存储单元  例如: int *p, k=4, q; p=i;  则赋值语句  q=*p;   就是把p所指存储单元(k)的内容(整数4)赋予变量q,这里的*p代表p所指向的变量i。因此,上面的语句等价于  q=k;   间接访问运算符必须出现在运算对象的左边,其运算对象是地址或者是存放地址的指针变量。即*号右边也可以是地址值,如   q=*(k);   表达式i求出变量i的地址,以上赋值语句表示取地址k中的内容赋给q。由于*和的优先级相同,且自右向左结合,因此表达式中的括号可以省略,即   q=*k;   下面的语句取指针变量p所指向的存储单元中的内容加1后赋给变量q。   q=*p+1; 7.3.2 移动指针 移动指针就是通过赋值运算,对指针变量加上或减去一个整数,使指针变量指向相邻的存储单元。因此,只有指针变量指向一片连续的存储单元时,指针的移动才有意义。 移动指针时,系统会根据指针的基类型自动地确定移动的字节数。 7.3.3 指针比较 指针的比较是通过关系运算符来实现的。设p、q是指向同一数据集合的指针变量,如果pq表达式的结果为“真”,则表明:p指针变量所指向的元素在q指针变量所指向的元素之后。 7.4 指针与函数 7.4.1 “传值”与“传址” 7.4.2 函数返回地址 7.4.1 “传值”与“传址” 形参为指针变量时,实参与形参之间的数据传递 若在定义函数时,函数的形

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档