网站大量收购独家精品文档,联系QQ:2885784924

二级C语言程序设计及同步训练 涂玉芬 第八章 指针新.ppt

二级C语言程序设计及同步训练 涂玉芬 第八章 指针新.ppt

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 指针 1.存储单元:构成存储单元的基本单位是字节,不同类型的存储单元由数量不等的连续字节组成,计算机给每个字节一个惟一的编号。 2.指针:构成某一存储单元的连续字节的起始字节编号称为该存储单元的地址,也称为该存储单元对应变量的指针。即:变量的指针就是变量的地址 8.1.2 指针变量 指针变量:存放某一变量的地址的变量称为指针变量。 指针变量的一般定义形式如下: 类型标识符 *标识符; 例:int *p; 允许指针变量在定义中初始化。 例如:int a=5,*p=a; /*a 是变量a的地址*/ 其示意图如图所示(图2): 注意:此语句是将a赋给p,而不是*p。 8.1.3 指针变量的运算 1.赋值运算 不能直接给一个指针变量赋一个整数 变量的地址是通过对变量取地址运算得到的。 变量名 “”是对变量取地址运算符,其作用是取得变量所占用的存储单元的地址(构成存储单元的连续字节的首字节编号)。 8.1.3 指针变量的运算 对指针变量的赋值是将另一变量的地址赋给指针变量。其一般格式有如下四种: ① 指针变量名=变量名 ② 指针变量名=指针变量名 ③ 指针变量名=指针变量名+整型数据值 ④ 指针变量名=指针变量名-整型数据值 8.1.3 指针变量的运算 例如: int a,i=1; int *p,*q,*m,*n; p=a; q=p; m=p+1; n=q-i; 8.1.3 指针变量的运算 2.取指针变量指向的存储单元(或变量)运算 *指针数据值 如果有: int a; int *p; p=a; 则:* p与a是相同的,表示同一个变量。 8.1.3 指针变量的运算 “”和“*”互为逆运算,但首先进行的运算是取地址,即“”运算。 如果有: int a=3,b; int *p; p=a; b=*p; *p=5; 则:指针变量p指向变量a;*p(即a)的值赋给b,b的值为3;将5赋给*p(即a),a的值为5。 8.1.3 指针变量的运算 3.比较运算 当两个基类型相同的指针变量已被正确赋值后,可以对指针变量的值进行比较运算。 如果有: int a[6]; int *p,*q; p=a[0]; q=a[5]; 指针变量p、q的指向如图8-4所示。 此时,对p、q进行比较运算,则有: pq、p=q、p= =q的值为假; pq、p=q、p!=q的值为真。 8.1.3 指针变量的运算 4.减法运算 两个指针变量在一定条件下,可进行减法运算。 设p, q指向同一数组,则p-q的绝对值表示p所指对象与q所指对象之间的元素个数。 8.1.3 指针变量的运算 如果有:char a[10]=Hello; char *p,*q; int n; p=a[0]; q=a[5]; n=q-p; 指针变量p、q的指向 如图8-5所示,则:n=5。 8.1.3 指针变量的运算 5.指针变量的运算应用举例 例8.1 输入a和b两个整数,按先大后小的顺序输出a和b。 #includestdio.h main() { int *p1,*p2,*p,a,b; scanf(%d,%d,a,b); p1=a; p2=b; if (ab) { p=p1; p1=p2; p2=p; } printf(a=%d,b= %d\n,a,b); printf(max= %d,min= %d\n,*p1,*p2); } 8.2.1 指针与一维数组 一、一维数组与指针 定义一维数组与指针。 例:int a[5],*p; 则a为首地址常量,其对象类型为int * ; a值与a[0]的值完全相同 若有p=a; /*或p=a[0]; */ 则有 2.地址等价关系 a+i ? p+i ? a[i] ? p[i] 3.对象等价关系 *(a+i) ? *(p+i) ? a[i] ? p[i] 注意:一维指针变量可以当作一维数组名来引用对象,如:p=a+2; 则p[0]?a[2],p[1]?a[3],… 8.2.1 指针与一维数组 二、应用举例 例8.2 用不同的方法对有10个元素的整型数组进行输入输出。 方法一:下标法。a[i] a[i] 方法二:地址法。 a+i *(a+i) 方法三:引入指针变量的地址法。 int *p;p=a; p+i *(p+i) 方法四:

文档评论(0)

精品课件 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档