【C++自我精讲】根蒂根基系列一 指针与引用
添加时间:2013-7-1 点击量:
【C++自我精讲】根蒂根基系列一 指针与引用
0 媒介
指针、引用、指针与引用差别。
1 指针
变量:代码中经常经由过程定义变量来申请并定名存储空间,并经由过程变量的名字来应用这段存储空间。
//变量
int nNum; //声明名字为nNum的int型存储空间
nNum = 100; //nNum存储值100
nNum = 200; //改变nNum存储值200
指针:又叫一级指针,用来指导一个内存地址的变量。对于一个类型T(int、char、folat...),T就是指向T的指针类型,一个T类型的变量保存了一个T对象的地址。
//指针
int pNum; //定义指针pNum
pNum = &nNum;//pNum指向变量nNum在内存中的地址,而不是变量本身的值200(取地址运算符&:取变量的地址。如:&nNum为取变量nNum的地址)
int nNum1 = pNum; //取指针pNum指向存储空间值200(指针运算符:从地址中取数据。如:pNum为从地址pNum中取值)
指针变量:指针是地址,指针变量是存放地址的变量。
//指针变量
int pVar = pNum;//等同int pVar = &nNum;
二级指针:指向指针变量的指针。
//二级指针
int ppNum = pVar;//
用一张图默示下二级指针:
C是常量;B是一级指针,B的值(即C的地址)是一级指针数据;A是二级指针,A的值(即B的地址)是二级指针数据。
空指针:不指向任何对象,指针变量值为NULL。指针为空的断定经常为了避免指针变量的不法应用。
int pNum = NULL;
...
if(NULL != pNum)
{
...
}
函数指针:是指向函数的指针变量。可用该指针变量调用函数,就如同用指针变量引用其他类型变量一样。
函数指针声明格局:类型申明符 (函数名)(参数)
//函数min
int min(int x,int y);
//函数max
int max(int x,int y);
//函数指针
int (pFun)(int, int);
//应用函数指针调用函数
int nNumMin = 1;
int nNumMax = 100;
int nMin = 0;
int nMax = 0;
pFun = min;
nMin = (pFun)(nNumMin,nNumMax);//nMin = 1;
pFun = max;
nMax = (pFun)(nNumMin,nNumMax);//nMax = 100;
指针函数:函数的返回值类型是一个指针类型,本质是一个函数。
指针函数声明格局:类型申明符 函数名(参数) 或 类型申明符 (函数名(参数))
int pfun(int, int);//pfun是一个指向返回值为int的函数的指针
2 引用
引用:是对象的别号,对引用的操纵与对变量的直接操纵一样。其首要用于函数参数和返回值类型,T&默示T类型的引用。引用不是数据类型,引用本身不占存储空间。
int i = 100;
int &j = i;//&为标识感化,非取地址
3 指针与引用差别
1)指针可以指向空值,引用不克不及。若是一个变量指向另一个对象,它可能为空,应当用指针;它不容许为空,应当应用引用。
2)指针可以改变指向,引用不成以改变指向。引用初始化今后不克不及被改变,指针可以改变所指的对象。
3)指针的大小是固定字节(4个字节),引用的大小是所指变量的大小。
我俩之间有着强烈的吸引力。短短几个小时后,我俩已经明白:我们的心是一个整体的两半,我俩的心灵是孪生兄妹,是知己。她让我感到更有活力,更完美,更幸福。即使她不在我身边,我依然还是感到幸福,因为她总是以这样或者那样的方式出现在我心头。——恩里克·巴里奥斯《爱的文明》
【C++自我精讲】根蒂根基系列一 指针与引用
0 媒介
指针、引用、指针与引用差别。
1 指针
变量:代码中经常经由过程定义变量来申请并定名存储空间,并经由过程变量的名字来应用这段存储空间。
//变量
int nNum; //声明名字为nNum的int型存储空间
nNum = 100; //nNum存储值100
nNum = 200; //改变nNum存储值200
指针:又叫一级指针,用来指导一个内存地址的变量。对于一个类型T(int、char、folat...),T就是指向T的指针类型,一个T类型的变量保存了一个T对象的地址。
//指针
int pNum; //定义指针pNum
pNum = &nNum;//pNum指向变量nNum在内存中的地址,而不是变量本身的值200(取地址运算符&:取变量的地址。如:&nNum为取变量nNum的地址)
int nNum1 = pNum; //取指针pNum指向存储空间值200(指针运算符:从地址中取数据。如:pNum为从地址pNum中取值)
指针变量:指针是地址,指针变量是存放地址的变量。
//指针变量
int pVar = pNum;//等同int pVar = &nNum;
二级指针:指向指针变量的指针。
//二级指针
int ppNum = pVar;//
用一张图默示下二级指针:
C是常量;B是一级指针,B的值(即C的地址)是一级指针数据;A是二级指针,A的值(即B的地址)是二级指针数据。
空指针:不指向任何对象,指针变量值为NULL。指针为空的断定经常为了避免指针变量的不法应用。
int pNum = NULL;
...
if(NULL != pNum)
{
...
}
函数指针:是指向函数的指针变量。可用该指针变量调用函数,就如同用指针变量引用其他类型变量一样。
函数指针声明格局:类型申明符 (函数名)(参数)
//函数min
int min(int x,int y);
//函数max
int max(int x,int y);
//函数指针
int (pFun)(int, int);
//应用函数指针调用函数
int nNumMin = 1;
int nNumMax = 100;
int nMin = 0;
int nMax = 0;
pFun = min;
nMin = (pFun)(nNumMin,nNumMax);//nMin = 1;
pFun = max;
nMax = (pFun)(nNumMin,nNumMax);//nMax = 100;
指针函数:函数的返回值类型是一个指针类型,本质是一个函数。
指针函数声明格局:类型申明符 函数名(参数) 或 类型申明符 (函数名(参数))
int pfun(int, int);//pfun是一个指向返回值为int的函数的指针
2 引用
引用:是对象的别号,对引用的操纵与对变量的直接操纵一样。其首要用于函数参数和返回值类型,T&默示T类型的引用。引用不是数据类型,引用本身不占存储空间。
int i = 100;
int &j = i;//&为标识感化,非取地址
3 指针与引用差别
1)指针可以指向空值,引用不克不及。若是一个变量指向另一个对象,它可能为空,应当用指针;它不容许为空,应当应用引用。
2)指针可以改变指向,引用不成以改变指向。引用初始化今后不克不及被改变,指针可以改变所指的对象。
3)指针的大小是固定字节(4个字节),引用的大小是所指变量的大小。