浅谈C++中的引用和指针

 更新时间:2023年08月23日 10:25:44   作者:小小草帽  
这篇文章主要介绍了浅谈C++中的引用和指针,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的内存单元,这是另一种形式的间接访问。

到此这篇关于浅谈C++中的引用和指针的文章就介绍到这了,更多相关C++引用和指针内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 贪心算法 WOODEN STICKS 实例代码

    贪心算法 WOODEN STICKS 实例代码

    贪心算法 WOODEN STICKS 实例代码,需要的朋友可以参考一下
    2013-05-05
  • C++基类指针和派生类指针之间的转换方法讲解

    C++基类指针和派生类指针之间的转换方法讲解

    今天小编就为大家分享一篇关于C++基类指针和派生类指针之间的转换方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • C/C++中extern

    C/C++中extern "C" 的作用分析

    这篇文章主要介绍了C/C++中extern "C" 的作用,是在进行C/C++程序设计中非常常见的用法,需要的朋友可以参考下
    2014-09-09
  • C++设计模式之简单工厂模式实例

    C++设计模式之简单工厂模式实例

    这篇文章主要介绍了C++设计模式之简单工厂模式实例,工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品,需要的朋友可以参考下
    2014-09-09
  • C语言之实现辗转相除法的两种方式

    C语言之实现辗转相除法的两种方式

    这篇文章主要介绍了C语言之实现辗转相除法的两种方式,具有很好的参考价值,希望对大家有所帮助,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • C语言结构体成员赋值的深拷贝与浅拷贝详解

    C语言结构体成员赋值的深拷贝与浅拷贝详解

    C语言中的浅拷贝是指在拷贝过程中,对于指针型成员变量只拷贝指针本身,而不拷贝指针所指向的目标,它按字节复制的。深拷贝除了拷贝其成员本身的值之外,还拷贝成员指向的动态内存区域内容。本文将通过示例和大家详细说说C语言的深拷贝与浅拷贝,希望对你有所帮助
    2022-09-09
  • Qt使用SQLite数据库存储管理图片文件

    Qt使用SQLite数据库存储管理图片文件

    这篇文章主要为大家详细介绍了Qt如何使用SQLite数据库实现存储管理图片文件的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-04-04
  • 浅析VSCode tasks.json中的各种替换变量的意思 ${workspaceFolder} ${file} ${fileBasename} ${fileDirname}等

    浅析VSCode tasks.json中的各种替换变量的意思 ${workspaceFolder} ${file} ${

    这篇文章主要介绍了关于VSCode tasks.json中的各种替换变量的意思 ${workspaceFolder} ${file} ${fileBasename} ${fileDirname}等,本文给大家介绍的非常详细,对大家的学习或工作具有参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • C语言计算分段函数问题

    C语言计算分段函数问题

    这篇文章主要介绍了C语言计算分段函数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 老生常谈C++getline使用方法

    老生常谈C++getline使用方法

    下面小编就为大家带来一篇老生常谈C++getline使用方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06

最新评论