C++引用和指针

引用

定义引用变量

C++允许为已定义的变量再起一个新的别名,称为变量的引用名。引用名看起来像是一个变量名,但它是一种特殊变量,称为引用变量,或简称为引用引用变量与其所引用的变量共用同一个内存单元,定义引用变量时不再单独分配内存空间。
注意:引用变量需与被引用变量类型相同
格式:

引用类型 &引用变量名 = 被引用变量名;

示例:

#include<iostream>
using namespace std;
int main(){
	int a = 10;
	int b = 20;
	cout << "a的值: a = " << a << endl;
	cout << endl;
	
	int &aa = a;  //定义引用变量aa,aa和a共用同一个内存单元 
	cout << "引用变量aa的值:aa = " << aa << endl;
	aa = b;
	cout << "a的值变为20:a: " << a << endl;
	return 0;
}

运行结果:

a的值: a = 10

引用变量aa的值:aa = 10
a的值变为20:a: 20

--------------------------------
Process exited with return value 0
Press any key to continue . . .

指针

取地址运算符

计算机对内存进行读写操作的最小单位是字节。为每个字节指定一个整数编号,称为该字节的内存地址。程序执行时,计算机将系统中的空闲内存分配给程序中定义的变量。C++语言提供一个取地址运算符 “&” 来获取变量的内存地址。
格式:

 & 变量名

示例

#include<iostream>
using namespace std;
int main(){
	int a = 10;
	cout << "a的值: a = " << a << endl;
	cout << "a的地址: &a = " << &a << endl;
	return 0;
}

运行结果:

a的值: a = 10
a的地址: &a = 0x6bfee8

--------------------------------
Process exited with return value 0
Press any key to continue . . .

定义指针变量

只能指向同一类型的不同变量
格式:

 指针类型 *指针变量名;

示例

#include<iostream>
using namespace std;
int main(){
	int a = 10;
	int x = 20;
	cout << "a的值: a = " << a << endl;
	cout << "a的地址: &a = " << &a << endl;
	cout << endl;
	
	int* b = &a;   //指针b指向a的地址 
	cout << "b指针存储的a的地址:b = " << b << endl;
	cout << "*b表示间接访问a的值:*b = " << *b << endl;
	return 0;
}

运行结果:

a的值: a = 10
a的地址: &a = 0x6bfee4

b指针存储的a的地址:b = 0x6bfee4
*b表示间接访问a的值:*b = 10

--------------------------------
Process exited with return value 0
Press any key to continue . . .

指针运算符 *

通过内存地址间接访问变量

示例

#include<iostream>
using namespace std;
int main(){
	int a = 10;
	cout << "a的值: a = " << a << endl;
	cout << "a的地址: &a = " << &a << endl;
	cout << endl;
	
	int &aa = a;  //定义引用变量aa,aa和a共用同一个内存单元 
	cout << "引用变量aa的值:aa = " << aa << endl;
	cout << "引用变量aa的地址:&aa = " << &aa << endl;
	
	
	cout << endl;
	
	int* b = &a;   //指针b指向a的地址 
	cout << "b指针存储的a的地址:b = " << b << endl;
	cout << "*b表示间接访问a的值:*b = " << *b << endl;
	return 0;
}

运行结果

a的值: a = 10
a的地址: &a = 0x6bfee4

引用变量aa的值:aa = 10
引用变量aa的地址:&aa = 0x6bfee4

b指针存储的a的地址:b = 0x6bfee4
*b表示间接访问a的值:*b = 10

--------------------------------
Process exited with return value 0
Press any key to continue . . .

访问一个变量的三种方式(定义一个变量a之后)

  1. 直接访问(a): 通过变量名a来直接访问
  2. 通过引用变量名间接访问(aa): 为变量a定义一个引用变量aa,通过引用名aa来访问变量a内存单元是一种间接访问的形式,被称为变量的间接访问。
  3. 通过内存地址间接访问 (*b): 定义一个指针变量b保存变量a的地址,再通过指针变量b中所保存的地址来访问变量a的内存单元,这是另一种形式的间接访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值