前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于变量、指针、别名(引用)和指针的指针

关于变量、指针、别名(引用)和指针的指针

作者头像
obaby
发布2023-02-28 10:46:54
1.3K0
发布2023-02-28 10:46:54
举报
文章被收录于专栏:obaby@marsobaby@mars

C/C++中的指针和别名这个东西确实是够恶心的。今天蛋疼的就写一下这些东西的区别,变量永远是最简单的没有什么技术含量,那么另外一个比较简单的就是别名了,其实个人感觉这个东西完全可以看作是一个人的“小名”,只是对同一个变量多了一个称呼而已,指向的数据和地址是和原变量完全一致的,并且用&进行取地址操作的得到的地址和原变量的地址是完全一致的(因而在对指针进行赋值的时候如果直接对指针地址操作则需要对变量或者别名使用&进行取地址运算,如果要直接赋值则需要使用*p=进行赋值)。最复杂的就是指针了,同样个人认为指针到头来就是一个地址,这样可能会比较好理解一些。例如*pointer,那么带有*(解引用操作符)的时候则是表示的数值,如果没有*则表示的是地址。也就是说可以将pointer看成一个内存地址在这个地址中保存的是另外一个数据的地址,当存在*的时候表示取该地址存取的内容,否则则是取这个变量保存的地址。指针的指针则就更加复杂了,例如**p,那么可以看作指针保存的数据是另外的一个指针,解引用操作一次将会得到一个*p,这仍然是个指针,当进行二次解引用操作的时候(**p)才能读到p中保存的数据信息。这么说可能比较难理解,那么看个实例就明白了。效果如下图:

程序的代码如下:

代码语言:javascript
复制
#include 

using namespace std;

int main()
{
    int ivalA=10;   //普通变量
    int ivalB=20;   //普通变量
    int *ppiA=NULL; //指针
    int *ppiB=NULL; //指针
    int **ppi=NULL; //指针的指针
    int &nameA=ivalA;   //别名
    int &nameB=ivalB;   //别名
    ppiA=&ivalA;    //指针赋值
    ppiB=&ivalB;    //指针赋值
    ppi=&ppiA;      //指针的指针赋值
    cout< <"变量、别名、指针和指针的指针的关系:"<
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2010年11月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档