【C++自我精讲】基础系列一 指针与引用

【C++自我精讲】基础系列一 指针与引用前言
指针、引用、指针与引用区别。

指针
变量:代码中常常通过定义变量来申请并命名存储空间,并通过变量的名字来使用这段存储空间。

//变量
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++自我精讲】基础系列一 指针与引用

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的函数的指针

引用
引用:是对象的别名,对引用的操作与对变量的直接操作一样。其主要用于函数参数和返回值类型,T&表示T类型的引用。引用不是数据类型,引用本身不占存储空间。

int i = 100;
int &j = i;//&为标识作用,非取地址

四 指针与引用区别
1)指针可以指向空值,引用不能。如果一个变量指向另一个对象,它可能为空,应该用指针;它不允许为空,应该使用引用。

2)指针可以改变指向,引用不可以改变指向。引用初始化以后不能被改变,指针可以改变所指的对象。

3)指针的大小是固定字节(4个字节),引用的大小是所指变量的大小。

原文链接: https://www.cnblogs.com/jiangu66/p/3165561.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/94110

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午2:28
下一篇 2023年2月10日 上午2:29

相关推荐