C++ | 指针与引用

指针是C++提供的一种颇具特色的数据类型,允许直接获取和操纵数据地址,实现动态存储分配。

一个数据对象的内存地址称为该数据对象的指针。指针可以表示各种数据对象,如简单变量、数组、数组元素、结构体,甚至函数。即指针具有不同的类型,可以指向不同的数据存储体。

引用是某一个变量或对象的别名,对引用的操作与对其所绑定的变量或对象的操作完全等价。引用是C++一个很重要的特性。

引用的特点:

1. 一定要初始化

2. 引用不能引用不可以取地址的数据

3. 引用不能改变

4. 引用只能使用,引用变量所引用的数据

  •     问:指针和引用的区别是什么?

答:(1) 非空区别在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此如果使用一个变量并让它指向一个对象, 但是该变量在某些时候也可能不指向任何对象,这时应该把变量声明为指针,因为这样可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如,设计不允许变量为空,这时就可以把变量声明为引用。不存在指向空值的引用这还是个事实,意味着使用引用的代码效率比使用指针要高。

(2) 合法性区别在使用引用之前不需要测试它的合法性。相反,指针则应该总是被测试,防止其为空。

(3) 可修改区别。指针与引用的另一个重要的区别是指针可以被重新赋值以指问另一个不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变,但是指定的对象其内容可以改变。

(4) 应用区别。总的来说,在以下情况下应该使用指针:一是考虑到存在不指向任何对象的可能(在这种情况下,能够设置指针为空);二是需要能够在不同的时刻指向不同的对象(在这种情况下,你能改变指针的指向)。如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么应该使用引用。

  •     为了更好地使用指针,常见的指针运用问题如下:

//用变量a给出下面的定义
//(1)一个整型数
int a;
//(2)一个指向整型数的指针
int *a;
//(3)一个指向指针的指针,它指向的指针是指向一个整型数
int **a;
//(4)一个有10个整型数的数组
int a[10];
//(5)一个有10个指针的数组,该指针是指向一个整型数的
int *a[10];
//(6)一个指向有10个整型数数组的指针
int (*a)[10];
//(7)一个指向函数的指针,该函数有一个整型参数并返回一个整型数
int (*a)(int);
//(8)一个有10个指针的数组,该数组里的指针指向一个函数,该函数有一个整形参数并返回一个整型数
int (*a[10])(int);

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值