C/C++编程:指针

1060 篇文章 293 订阅

定义

定义:*变量名:

指针存放某个对象的地址,要想获取这个地址,需要用到取地址符&:

 

如果指针指向了一个对象,则允许使用解引用符*(如果我们要操作一个指针,必须确保它是有效指针),来访问操作对象:

 

在指针的声明周期中,可以通过给指针赋值(也就是存放一个新的地址),令它指向一个新的对象:

 

如果我们想要直到一条赋值语句改变的是指针还是指向指向的对象,可以通过记住赋值永远改变的是等号左侧的对象:

一般来讲,指针的类型必须与所指对象的类型一致,但是有两个例外:

  • 允许一个指向常量的指针指向一个非常量对象。指向常量的指针仅仅要求不能通过该指针改变对象的值,但是没有规定那个对象的值不能通过其他途径改变

ps:*与&在不同的语境下有不同的含义:

空指针

空指针表示不指向任何对象:


建议:初始化所有指针,如果实在不清楚指针应该指向何处,就把他初始化为

0或者nullptr,这样程序就能检测到它没有指向任何对象了

void*指针

void*是一种特殊的指针类型,可以用于存放任何对象的地址:

 

指向指针的指针

可以通过*的个数区分指针的级别:

 

指向指针的引用

 

引用本身不是一个对象,因此不能定义指向引用的指针

指针是对象,所以存在对指针的引用

 

如何区分变量的类型:从右到左读,离变量名最近的符号对变量的类型有最直接的影响

 

指针 VS 引用

指针和引用一样,实现了对其他对象的间接访问。

指针和引用的不同:

  • 指针本身就是一个对象,允许对指针赋值和拷贝,在指针的生命周期内可以先后指向不同的对象
  • 引用本身并非一个对象,一旦定义了引用,就无法解绑,让它指向不同的对象了
  • 引用定义的时候必须初始化, 指针无须在定义时给予初值(不推荐这样做)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值