C++引用(变量引用、数组引用与数组指针、引用本质-指针常量、常量引用)


1 引用的基本用法

作用:为变量或数组起别名。

1.1 变量的引用

语法数据类型 &别名 = 原名;

示例

int main() {
   
	int a = 5;
	int &b = a;	//引用:为变量起别名

	cout << "a = " << a << endl;	//5
	cout << "b = " << b << endl;	//5

	b = 10;
	cout << "a = " << a << endl;	//10
	cout << "b = " << b << endl;	//10

	return 0;
}

1.2 数组的引用

(1)直接定义数组引用
语法数据类型 (&别名)[数组长度] = 原数组名;

int arr[5] = {
   1,2,3,4,5};
//直接定义数组引用
int (&array)[5] = arr;
//直接定义数组指针
int (*arrPtr)[5] = &arr;

注1:数组引用 vs 数组指针
数组引用定义数据类型 (&别名)[数组长度] = 原数组名;,如:int (&array)[5] = arr;
数组引用访问元素别名[索引],如array[i]
数组指针定义数据类型 (*数组指针名)[数组长度] = &数组名;,如:int (*arrPtr)[5] = &arr;
数组指针访问元素(*数组指针名)[索引],如(*arrPtr)[i]或·*((*arrPtr) + i)
【区别】数组引用(赋值符左边是&,右边是数组名);数组指针(赋值符左边是*,右边是数组地址

注2:数组指针 vs 指针数组
数组指针(array pointer):指向数组的指针,用于存储数组的地址

数组指针使用小括号,如int (*p)[5] = &arr;
指向长度为5且元素类型为int类型的一维数组,即指向一个int[5],存储数组地址;
占用内存大小为4字节。

指针数组(pointer array):元素为指针类型的数组,用于存储指针类型的元素

指针数组未使用小括号,如int *p[5] = &arr;
长度为5且元素类型为int *(指针类型)的一维数组,每个int *(指针类型)元素存放其对应常量的首地址;
占用内存大小为20字节(int *指针类型占4字节,共5个元素)。

示例1:直接定义数组引用

#include <iostream>
using namespace std;

int main() {
   
	int arr[5] = {
    1,2,3,4,5 };

	/* 1.直接定义数组引用 */
	int (&array)[5] = arr;

	//使用数组别名遍历数组
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
   
		cout << array[i] << endl;
	}

	/* 定义数组指针 */
	int (*arrPtr)[5] = &arr;	//&arr:整个数组的地址
	
	//arr等价于&arr[0],类型为int *类型:数组首元素地址 
	//int (*arrPtr)[5] = arr; 	//报错:int *类型的值不能用于初始化int (*)[5]类型的实体
	
	
	//使用数组指针遍历数组
	for (int i = 0; i < sizeof
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值