C语言程序设计与项目案例教程 课件 第7章 指针.ppt

C语言程序设计与项目案例教程 课件 第7章 指针.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计 【例7-4】使用指针参数将改变带回到调用函数。 运行结果 语句编写 7.1指针与指针变量 程序说明: 使用指针作为参数,函数改变参数的值后,能将改变带回到调用函数。swap()函数的参数是两个指向整型变量的指针变量。所以main()函数在调用时必须使用i、j来传递参数。 源代码见教材 before calling:i=133 j=58 in the function swap:*a=58 *b=133 after calling:i=58 j=133 C语言程序设计 【例7-5】输入a、b和c三个数,按由大到小的顺序输出。 运行结果 语句编写 7.1指针与指针变量 程序说明: 这里限定了swap()函数、exchange()函数的返回类型是void,因此,要得到输出值就务必传递一个数值的地址。总之,若希望通过函数调用改变一个或多个变量的值,可以采用传送相应变量地址的方法。 源代码见教材 78 17 33 78,33,17 7.2指针变量的应用 C语言程序设计 一个变量有地址,一个数组包含若干元素,每个数组元素都在内存单元中占用存储单元,它们都有相应的首地址。数组名是数组的首地址(不能说是数组元素的首地址),针对同一个数组来说,它是一个常量。 所谓数组的指针,是指数组的起始地址,事实上也就是数组名。一个数组是由连续的一块内存单元组成的,数组名就是这块连续内存单元的首地址。一个数组也是由各个数据元素(下标变量)组成的,每个数组元素按其类型的不同占用不同个数的连续的内存单元,指针变量既然可以指向一般变量,当然也可以指向数据元素,数组元素的指针是数组元素的地址。一个数组元素的首地址也是指它所占用的几个内存单元的首地址。 指向一维数组的指针变量 7.2指针变量的应用 C语言程序设计 数组中各个元素的地址又是如何计算和表示的呢?如果有一个数组a,其定义为:int a[5]={1,3,5,7,9};,元素a[0]的地址是a的值(即1010),元素a[1]的地址是a+1。同理,a+i是元素a[i]的地址。值得特别注意的是,此处的a+i并非简单的在首地址a上加个数字i,编译系统计算实际地址时,a+i中的i要乘上数组元素所占的字节数,即实际地址=a+i×单个元素所占的字节数。其中,单个元素所占的字节数由数据类型决定。 指向一维数组的指针变量 7.2指针变量的应用 C语言程序设计 为了引用一个数组元素,可以用两种不同的方法:一种是下标法,即指出数组名和下标值,系统会找到该元素。例如,a[3];另一种方法是指针法,也叫地址法,就是通过给出的数组元素地址访问某一元素。例如,通过地址a+3可以找到数组元素a[3],而*(a+3)的值就是元素a[3]的值。 (1)下标法。 用a[i]的形式访问数组元素。前面介绍数组时都采用的这种方法。 (2)指针法 采用*(a+i)或*(p+i)的形式,用间接访问的方法来访问数组元素,其中a是数组名,p是指向数组a的指针变量。 指向一维数组的指针变量 C语言程序设计 【例7-6】用下标法输出数组中的全部元素。 运行结果 语句编写 7.2指针变量的应用 源代码见教材 a[0]=0 a[1]=1 a[2]=2 a[3]=3 a[4]=4 C语言程序设计 【例7-7】用指针法输出数组中的全部元素。 运行结果 语句编写 7.2指针变量的应用 源代码见教材 a[0]=0 a[1]=1 a[2]=2 a[3]=3 a[4]=4 7.2指针变量的应用 C语言程序设计 C语言规定:若p为指向某一数组的指针变量,则p+1指向同一数组中的下一个元素。例如,int array[10],*pointer=array;,则: (1)pointer+i和array+i都是数组元素array[i]的地址,如图7-4所示。 (2)*(pointer+i)和*(array+i)就是数组元素array[i]。 (3)指向数组的指针变量被赋值为数组名后也可按下标法来使用。例如,array[i]等价于*(pointer+i)。 通过指针引用数组元素 7.2指针变量的应用 C语言程序设计 名师点睛 1)数组名是指针变量,始终是指向数组的首地址;而指针是一个变量,可以实现本身值的改变。如有数组a和指针变量p,则以下语句是合法的。p=a;p++;p+=3;而“a++;”与“a=p”都是错误的。 (2)在使用中应注意*(p++)与*(++p)的区别。若p的初值为a,则*(p++)的值等价于a[0],*(++p)等价于a[1],而(*p)++表示p所指向的元素值加1。如果p当前指向a数组中的第i个元素,则有:“*(p--);”等价于“a[i--];”;“*(++)p;”等价于“a[++i];”

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档