- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章指 针 本章教学内容、要求 内容 1、地址与指针 2、指针型变量的定义 3、指针与数组 4、指针与字符串 5、指针与函数 6、动态存储分配 要求 1、了解地址与指针的概念; 2、掌握指针变量的定义与使用; 3、掌握将一个变量或数组的地址赋给指针类型的变量; 4、掌握通过指针类型的变量去访问某个变量或数组元素的值。 重点与难点 重点 1、指针变量的定义与引用; 2、指针与数组; 3、指针与函数。 难点 指针变量的引用 指 针 指针是C语言的一个重要概念,也是C语言的一个重要特色。深刻理解和正确使用指针是学习本章的基本要求。 §8.1 地址和指针 一、地址 在计算机中,把内存区划分为一个一个的存储单元,每个单元为一个字节(8位),它们都有一个编号,这个编号就是内存地址。如下图所示: §8.1 地址和指针 二、举例 如有定义:char c=‘A’; int a=3; 则所占内存情况如下: §8.1 地址和指针 三、指针与指针变量 1、指针:简单地说,指针就是地址。二者是同一个概念的两种说法。只不过指针更形象一些,就像一个针一样,可以指向某个内存单元。 什么是指针变量呢?我们回忆一下什么叫整型变量 2、指针变量:首先指针变量就是一个变量,和我们以前所讲的其它变量没有本质区别。不同之处在于这种变量中所存放的内容是地址。 §8.1 地址和指针 §8.1 地址和指针 1、直接访问 通过变量本身对变量进行存取的方式,称为直接访问。 如定义:int x; 则x=10; x+=5; 等等 这种访问方式只需要变量本身就得到了该变量的全部信息,不需要其它内容,是直接的。 2、间接访问 通过指针变量实现对变量的访问方式,称为间接访问。 首先要定义一个指针变量,然后将一个同类型变量的地址赋给该指针变量(这时我们称指针变量指向该变量),这样就可以进行间接访问了。 间接访问的过程是:由指针变量得到变量的地址,根据该地址找到变量的存储区,再对该存储区的内容进行存取,从而实现了对变量的间接访问。 §8.2 指针变量 一、指针变量的定义和赋值 1、格式:类型名 *指针变量名; 2、举例 int *p1; char *s1, *s2; float *a1, *a2, f; 3、说明 a. 类型名:指针变量所指向的变量类型。 b. * 是定义指针变量的标志,不可丢掉。 c. 指针变量定义后,其值是不确定的。 §8.2 指针变量 4、赋值:可以进行初始化,也可以使用赋值语句 (1)、初始化: int a, *s=a; int *f=NULL; (2)、赋值语句 int a, *s; s=a; (3)、注意:只能用同类型变量的地址进行赋值! 如定义:int *s; float f; 则 s=f;是非法的。 (4)、不能给指针变量赋以整型量或其它地址量。 如:int *p; 则 p=2000; 是错误的。 §8.2 指针变量 §8.2 指针变量 二、指针变量的引用 1、两个运算符: 与 * :取地址,注意与作位运算符时的不同(双目) *:指针运算符(间接访问符),取内容 ,*P表示 P所指向的变量,注意与乘运算符不同(双目) 2、说明 a. 既可作用于一般变量,也可作用于指针变量 b. * 只能作用于指针变量,*s等同于变量a。 c. 定义指针变量时的 * 与该处的含义不同 d. 优先级别相同。 e. 结合是自右向左方向结合。 §8.2 指针变量 3、指针变量可以进行的操作 (1)赋值:int a,*p1=a,*p2; p2=p1; (2)输出:printf(“%x”,p1); (3)增减:p1++; p2--; p1+=4; (只能和一个整数) (4)取内容:*p1=5; ? a=5; printf(“%d”,*p1); (5)比较:一般与指针常量NULL进行比较;当两指针变量同时指向一连续数据区(如数组)时,通过指针值的大小比较判断其指向关系。 (6)相减:两个指针变量可进行相减,相减结果表示两指针之间的元素个数。 p++
文档评论(0)