第6章指针和引用 61分 62引用 人民邮电出版社 POSTS tEl OM PRE 动此映
第6章 指 针 和 引 用 6.1 指 针 6.2 引 用
61指针 6.1,1指分的概念 所谓指针是一个存储单元的地址值,用来 存放地址(即指针)的变量也称指针变量。 在上下文意义明确的情况下,常常将指针 变量也简称为指针。 人民邮电出版社 POSTS tEl OM PRE 动此映
6.1 指 针 6.1.1 指针的概念 所谓指针是一个存储单元的地址值,用来 存放地址(即指针)的变量也称指针变量。 在上下文意义明确的情况下,常常将指针 变量也简称为指针
指针变量和普通变量一样占有一定的存储 空间,但它与普通变量的区别在于指针变 量的存储空间中存放的不是普通的数据, 而是一个地址值—指针。 人民邮电出版社 POSTS tEl OM PRE 动此映
指针变量和普通变量一样占有一定的存储 空间,但它与普通变量的区别在于指针变 量的存储空间中存放的不是普通的数据, 而是一个地址值——指针
61.1.1指的声明 指针是一个变量,必须先声明后使用。指 针声明的一般形式如下: 数据类型*标识符; 注意:指针声明语句中的数据类型是指针 变量所指向的变量的数据类型,即指针变 量所指向的存储单元中存储数据的数据类 型,并不是指针变量本身的类型,任一指 针变量本身数据值的类型都是 unsigned long int。 人民邮电出版社 POSTS tEl OM PRE 动此映
6.1.1.1 指针的声明 指针是一个变量,必须先声明后使用。指 针声明的一般形式如下: 数据类型 * 标识符; 注意:指针声明语句中的数据类型是指针 变量所指向的变量的数据类型,即指针变 量所指向的存储单元中存储数据的数据类 型,并不是指针变量本身的类型,任一指 针变量本身数据值的类型都是unsigned long int
61.1.2指变量运算符 1.取地址运算符& 该运算符表示对“&”后面的变量进行取地 址运算。 指针变量是用来存放变量地址的变量,因 此可以通过取地址运算符&,将某一变量 的地址赋值给指针变量。例如: int a=2, *p; p=&a; 人民邮电出版社 POSTS tEl OM PRE 动此映
6.1.1.2 指针变量运算符 1. 取地址运算符& 该运算符表示对“&”后面的变量进行取地 址运算。 指针变量是用来存放变量地址的变量,因 此可以通过取地址运算符&,将某一变量 的地址赋值给指针变量。例如: int a=2,*p; p=&a;
指针变量p 变量a 00347FDF 2 00347FDF 图6-1指针变量p和变量a的关系 人民邮电出版社 POSTS tEl OM PRE 动此映
指针变量 p 变量 a 00347FDF 2 00347FDF 图 6-1 指针变量 p 和变量 a 的关系
【例61】变量地址及取地址运算符的使用。 #includesiostream.h> void maino int i=l: cout<<"i="<<i<<"lt变量i的地址为: w<<&i<<endl 人民邮电出版社 POSTS tEl OM PRE 动此映
【例6.1】变量地址及取地址运算符的使用。 #include void main() { int i=1; cout<<"i="<<i<<"\t 变 量 i 的 地 址 为 : "<<&i<<endl; }
运行程序,输出显示结果: i=1变量i地址为:0x0012FF7C 人民邮电出版社 POSTS tEl OM PRE 动此映
运行程序,输出显示结果: i=1 变量i的地址为:0x0012FF7C
2间接访问运算符 该运算符也称“指针运算符”或“取内容 运算符”,它后面必须是一个指针变量, 表示访问该指针变量所指向的变量,即访 问指针所指向的存储单元的内容。 例如: int i=l, *p=ⅈ cout<<x p 人民邮电出版社 POSTS tEl OM PRE 动此映
2. 间接访问运算符* 该运算符也称“指针运算符”或“取内容 运算符” ,它后面必须是一个指针变量, 表示访问该指针变量所指向的变量,即访 问指针所指向的存储单元的内容。 例如: int i=1,*p=&i; cout<<*p;
注意: (1)不要将间接访问运算符“*”与声明 指针时的“”混为一谈。指针声明时的 “*”是指针变量声明的标示,可以称为 “指针指示符”,而间接访问运算符“*” 用来访问指针所指向的变量。 (2)通过以上的说明可以看出,*运算和 &运算互为逆运算 人民邮电出版社 POSTS tEl OM PRE 动此映
注意: (1)不要将间接访问运算符“*”与声明 指针时的“*”混为一谈。指针声明时的 “*”是指针变量声明的标示,可以称为 “指针指示符” ,而间接访问运算符“*” 用来访问指针所指向的变量。 (2)通过以上的说明可以看出, *运算和 &运算互为逆运算