第六章指针、引用与
动态内存分配
导出数据类型(2)——指针
指针与动态内存分配
导出数据类型(3)——引用
§ 导出数据类型(2)——指针
一、指针变量说明
1、定义指针变量
格式:<类型名> *<指针变量名>
int *pi; //pi是一个指向int型变量的指针
char *pc; // pc是一个指向char型变量的指针
char (*pa)[3]; //pa是一个指向一维数组的指针
int (*pf)( ); //pf是一个指向函数的指针
int **pp; //pp是一个指向指针的指针
例
§ 导出数据类型(2)——指针
一、指针变量说明
1、定义指针变量
格式:<类型名> *<指针变量名>
说明
①、每一个指针变量都有一个相应的类
型(void *指针除外),该类型用以
说明这个指针变量所指向的地址中
存放数据的数据类型。
②、一个指针变量所占的内存空间大小
与一个内存地址所占空间相等。即
一个int型指针变量与一个double型
指针变量占用同样大小的内存空间。
③、指针是变量,所以凡可声明变量的
地方,就可声明指针变量。
④、定义名为iPtr的指针可以写成:
int* iPtr; (*靠左)
int *iPtr; (*靠右)
int * iPtr; (*两边都不靠)
⑤、在指针定义中,一个*只能表示一个指针。如:
int *countPtr,count;声明countPtr为整型指针,声明count为整型,而不是整型指针。
§ 导出数据类型(2)——指针
一、指针变量说明
2、指针的初始化
⑴&操作符:
&称为取地址运算符,用&可以获取变量的地址,指针变量用于存放地址。
例
int *iPtr;
int iCount=18;
iPtr=&iCount;
0000:F822
18
0000:F822
iPtr
iCount
§ 导出数据类型(2)——指针
一、指针变量说明
2、指针的初始化
⑵*操作符:
* 既是乘法运算符,又可以用于定义指针,这里还可以用于指针的间接引用,称为取内容运算符或间接运算符。
间接引用时,可获得由该指针变量指向的变量的内容。
#include<>
{ int *iPtr;
int iCount=18;
iPtr=&iCount;
cout<<*iPtr<<endl;
}
例
§ 导出数据类型(2)——指针
一、指针变量说明
2、指针的初始化
⑵*操作符:
#include<>
{ int *iPtr;
int iCount=18;
iPtr=&iCount;
cout<<*iPtr<<endl;
}
例
*放在可执行语句中的指针之前,称
为间接引用操作符;*放在指针定义中,称为指针定义符。
说明
②非指针变量是不能用间接引用操作符的,因为*只能作用于地址。如:
cout<<*iCount; //error
③指针是变量,是变量就具有内存地址,故指针变量本身也有地址。
#include<>
void main( )
{
int iCount=18;
int *iPtr=&iCount;
*iPtr=58;
cout<<iCount<<endl;
cout<<iPtr<<endl;
cout<<&iCount<<endl;
cout<<*iPtr<<endl;
cout<<&iPtr<<endl;
}
0067:FE00
58
0067:FE00
iPtr
iCount
0067:FDFC
运行结果:
58
0x0067fe00
0x0067fe00
58
0x0067fdfc
§ 导出数据类型(2)——指针
一、指针变量说明
2、指针的初始化
⑵*操作符:
int &rInt=intOne;
int *ip=&intOne;
cout<<&ip;
说明
④引用运算符与地址运算符虽然使用相
同的符号,但它们是不一样的。
§ 导出数据类型(2)——指针
一、指针变量说明
2、指针的初始化
⑵*操作符:
int &rInt=intOne;
int& rInt=intOne;
int & rInt=intOne;
说明
与指针类似,下面的三种声明引用的方
式都是合法的:
§ 导出数据类型(2)——指针
一、指针变量说明
2、指针的初始化
⑶ NULL指针
例
int *p=NULL;
一个指针变量可以被赋以空值,表明它不指向任何一个对象。
第六章 指针、引用与动态内存分配 来自淘豆网www.taodocs.com转载请标明出处.