IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C和C++ 引用和指针 -> 正文阅读

[C++知识库]C和C++ 引用和指针

一 引用和指针

引用:

给已存在变量取一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间.
在C++语言中,函数的参数和返回值的传递方式有三种:值传递,指针传递和引用传递.引用具有指针的效率,又具有变量使用的方便性和直观性.

指针:

内存地址,指针变量是用来存放内存地址的变量.不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。

二 引用与指针的区别

1 引用在定义时必须初始化,指针则没有要求(尽量初始化,防止野指针)

2 引用在初始化引用一个实体后,就不能再引用其它实体,而指针可以在任意时候指向一个同类型实体

3 没有NULL引用,但是有nullptr指针

4 在sizeof中含义不同: 引用结果为引用类型的大小,但指针始终是地址空间,所占字节个数(32位平台占4个字节)

5 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小

6 有多级指针,但没有多级引用

7 访问实体的方式不同,指针需要显式解引用,引用编译器自己处理

8 引用是类型安全的,即引用比指针使用起来相对安全

三 代码示例

int main()
{

	int v1 = 10;
	int *v2 = &v1;
	int &v3 = v1;
	int &v4 = v3;

	printf("v1 = %d; v1 addr = %p \r\n", v1,&v1);
	printf("v2 = %d (%p); v2 addr = %p \r\n", v2, v2, &v2);
	printf("v3 = %d (%p); v3 addr = %p \r\n", v3, v3, &v3);
	printf("v4 = %d (%p); v4 addr = %p \r\n", v4, v4, &v4);
	system("pause");
	return 0;
}


结果:
v1 = 10; v1 addr = 0044FA3C
v2 = 4520508 (0044FA3C); v2 addr = 0044FA30
v3 = 10 (0000000A); v3 addr = 0044FA3C
v4 = 10 (0000000A); v4 addr = 0044FA3C

在这里插入图片描述

四 左值与右值

左值:
表示存储在计算机内存的对象。代表一个内存地址值。

右值:
一个真实具体的值。

int v1 = 10;
int &v2 = &v1; // err!&v1在这里是一个具体的地址值,是右值。因此不能用在引用上。
int &v3 = v1;	 //right!v1是一个左值,表示一个变量。

参考:

https://blog.csdn.net/HUAERBUSHI521/article/details/118368696
https://baike.baidu.com/item/%E5%B7%A6%E5%80%BC%E4%B8%8E%E5%8F%B3%E5%80%BC/5537417?fr=aladdin

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:22:11  更:2022-10-08 20:23:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 2:49:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码