- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
指针课件(一)
NIHAO 第11章 指针(一) 主要内容 指针是C语言中一个非常重要的概念,也是C语言中最具特色的内容 正是有了指针,才使得C语言的功能比其他语言强大 指针是C语言的一种数据类型,这种类型的变量存放的内容是地址数据 重点:指针的概念、定义和简单使用 11.1 变量的指针与指针变量 在计算机中,存储器由字节组成,每个字节有一个编号,编号是按自然顺序排列的,每个字节的编号就是该字节的地址 数据存放在存储器的字节中,不同数据类型的数据所占用的内存字节数不同 在TC编译系统中,整型量占2个字节,字符量占1个字节等 根据一个内存单元的编号可以准确地找到该内存单元,内存单元的编号也称为地址,通常也把这个地址称为指针 变量的地址与内容 当定义一个变量时,系统会根据变量的数据类型为这个变量分配一定的存储单元(连续的字节),这些字节的首地址就是这个变量的地址(或指针) 在这些存储单元中可以存储数据,所存放的数据是以二进制的形式表示的,称为变量的内容 内存单元的指针和内存单元的内容是两个不同的概念 指针变量 变量的地址是编号,也是数据,这种数据表示的是地址,也是可以被存取的 在C语言中,允许用一个变量来存放指针,这种变量称为指针变量 一个指针变量的值就是某个内存单元的指针或某个内存单元的地址,称这个指针变量指向该内存单元 变量和其指针变量的关系 变量x的内容为45,x占用了021A号单元(地址用十六进制数表示,由系统随机分配) 指针变量p,占用了022B号单元,变量的内容为数据021A,这正是变量x的地址 称p指向变量x,或者说p是指向变量x的指针 指针和指针变量 指针和指针变量是不同的 一个指针是一个地址,是一个常量。而一个指针变量是变量,可以被赋予不同的指针值 定义指针变量的目的是为了通过指针变量去访问内存单元 变量x的指针是021A,p是指向变量x的指针变量 存储的概念 在C语言中,一种数据类型或数据结构往往都占有一段连续的内存单元。例如,数组和函数。 指针变量的值表示的是一个地址,这个地址不仅可以是某个变量的地址,也可以是其他数据结构的地址 一个数组的首地址可以存放在一个指针变量中,一个函数的首地址也可以存放在一个指针变量中。数组和函数都是连续存放的,通过访问指针变量可以取得数组或函数的首地址,找到该数组或函数 通过指针变量可以使用数组或函数,程序会变得精练、高效 11.2 指针变量的定义与引用 定义一个指针变量的一般形式为 类型说明符 *变量名; 如, int *p; float *p2,*q2; int *p;float *p2,*q2; *表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示该指针变量所指向的变量的数据类型,通常称为基类型 p,p2,q2是三个指针变量。 p的基类型是int,p的值只能是某个int类型变量的地址,或者说p只能指向一个int类型的变量 p2和q2的基类型是float,p2和q2的值是float类型变量的地址,或者说p2和q2只能指向float类型的变量 运算符“*”的含义 在程序中用“*”符号表示“指向”,表示指针变量和它所指向的变量之间的关系。 p代表指针变量,若p指向变量x,那么*p就是p所指向的变量,也就是变量x。此时*p和x都表示x的内容 变量的赋值 有了前面的定义,下面两个语句作用相同: x = 45; *p = 45; 第一个语句的含义是把45赋给变量x,第二个语句的含义是将45赋给指针变量p所指向的变量,即变量x。 注意第二个语句不要写为 p = 45; 2. 指针变量的引用 指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值 未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。因为此时系统不知道指针变量的值是多少,也就是不知道它指向哪里 指针变量的赋值只能赋予地址,决不能赋予其他数据,否则将引起错误 在C语言中,变量的地址是由编译系统分配的 , 对程序员是透明的 “”和“*” 在C语言中,为了方便指针的使用,引入了两个运算符“”和“*” (1) “”表示取地址运算符,也就是计算变量的地址 (2) “*”表示指针运算符(或称“间接访问”运算符),也就是指向的变量 地址运算符“”用于计算变量的地址,其一般使用方式为 变量名 如,“i”表示变量i的地址,“x”表示变量x的地址 指针变量的赋值 设有指向整型变量的指针变量p,若要使p指向整型变量x,即,把整型变量x 的地址赋予p,可采取以下两种方式 (1) 指针变量初始化的方法 int x; int *p = x; (2) 赋值语句的方法 int x; int *p; p = x; 注意不能写为“*p = x;” int i=45,x
文档评论(0)