- 1、本文档共46页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
11 - 指针的使用
2010 河北工业大学计算机基础课程系列
C++ Programming
授课:朱怀忠
zhuhuaizhong@126.com
Copyright © HEBUT . All rights reserved
前言
本次课程内容
指针的概念
指针的定义
指针变量的初始化
指针的运算
概念
内存地址
0x00010x0002 。。。。 0x0007 0x0008 。。。。
内存的基本操作单位是字节byte (8个二进制位bit),无论是读出还是写入
数据,都需要知道要操作的是哪个字节,因此,类似于人们对房间进行编号
的机制,操作系统对每个字节都进行了编号,称为内存地址。
32位微机地址总线(AB)为32位,每一位都可以输出1或者0,所以总共的组
32 32 10 10 10 2
合个数为: 2 ,即可以表示 2 个字节,为 2 *2 *2 *2 =4GB
32个二进制位如果用二进制来书写,非常繁琐,故通常使用比较简短的16
进制来表示,4GB地址范围是: 0 ~ 0xFFFFFFFF
概念
变量与内存地址
int x int y
0x00010x0002 。。。。 0x0007 0x0008 。。。。
一个字节能表示的最大无符号数为255,远远满足不了需要,不同类型的数
据往往需要多个字节才能表示出一个数,比如 32位windows平台int类型
需要4个字节。
操作一个数据时,没必要把存储占用的字节地址都指出来,只要知道第一个
字节地址(首地址)及数据类型,就可以操作全部字节。
概念
指针变量
指针 全称为 指针变量,即存储变量首地址的变量。
定义形式: 数据类型 *变量名字,例如 int *p; double *q;
其中:
数据类型,指的是该地址处存储的数据的类型
* 固定字符,指明这个变量是一个指针变量
变量命名规则同普通变量
当指针变量定义之后,只能指向同类型的数据,如p只能指向整形变
量的存储空间
举例:
int a=2;double b=3;
int *p;double *q;
p=a;q=b;
概念
取地址
变量所占据的内存地址由系统分配, 我们并不知道系统分配给变量的真正地
址是什么。那么如何获得某个变量的首地址并将它放入一个指针变量中?
由变量名得到它所代表的数据的首地址,可以使用取地址运算符 。
格式: 变量名
例如: int a=2,b[2]={1,0};couta“\t”b[1]endl
例如:int a=2;double b=3;int *p;double *q;p=a;q=b;
概念
取内容 *
如何用指针变量处理和改变它所指向的单元的值?使用取内容运算符 * ,
也称为引用运算符,间接运算符
格式: *(指针运算结果) 或者 *(指针变量)
例上例中: cout *(a)endl;会输出 2,同 cout*pendl
特别的:
在使用类似 *intp 的运算之前,intp必须被赋值,即确实指向某个
存在的地址。
一维数组名字代表的即是第一个元素的地址,所以可以这样用
cout*bendl;
普通变量名不可以这样使用。cout *aendl; 是错误的
文档评论(0)