const和引用/指针的结合!

本文详细介绍了C++中引用的基本特点及其与const结合使用的规则。包括引用必须初始化、不能重新指向,以及如何使用const限定符来创建不可修改的引用。此外,还探讨了引用与可寻址和不可寻址常量之间的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引用(&)的特点:

(1)    必须初始化   int &a = b;  //将b的地址存放在开辟的内存中

(2)    初始化的值必须可以取地址  int &a = 10;  //error

(3)    引用一经定义不能改变     int &a=b;  &a=c;  //error

(4)    访问引用变量,永远访问的是它所引用的内存

const和引用的结合:

(1)对变量的引用,可以用普通引用,也可以常引用。

例:int a = 10;

       int &b  = a;

       const int &c = a;    //常引用可以引用变量,也可以引用常量(即:int a; const int a;)

(2)对常量的引用,又分为两种:

a、可寻址的常量;

b、不可寻址的常量;

对可寻址的常量的引用,例:const int a = 10;

                                            const int &p = a;

对不可寻址的常量的引用,例:const int &p = 10;   //正确  (虽然10不可寻址,但可常引用,因为产生了临时量,如下:)

                                               const int &p = 10;————> const int temp = 10;

                                                                                               const int &p = temp;

例:在内存0x0018ff44上写一个4字节的整数10?

指针变量:           int *p = (int*)0x0018ff44;

                            *p = 10;

指针的引用变量:int *const &p = (int*)0x0018ff44;   //不可寻址,故采用常引用,也产生临时量

                            *p = 10;            临时量: int *const temp = (int*)0x0018ff44;

                                                                    int *const &p = temp;

const和指针的结合:

有三种结合方式:

        a、const int *p    //const修饰*p     *p不能改变,p的指向可以改变

        b、int const *p    //const修饰*p     *p不能改变,p的指向可以改变

        c、int *const p    //const修饰p       p的指向不能改变,*p可以改变

例1:

const int a = 10;

int *p = &a;   //error     a的类型为const int*    p的类型为int*     const int* ——> int*  错误    应改为 const int *p = &a;

*p = 20;

例2:

int a = 10;

const int *p  = &a;   //ok    a的类型为int*    p的类型为const int*   因为a本身可被修改,即使赋值给*p,*p不可被修改,故正确。 int*——>const int*   正确

int *q = p;  //error  p的类型为const int*  q的类型为int*  故错误。 应改为const int *q = p;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值