2020-09-25C++学习笔记引用2:二级指针形参与指针形参的使用方法和区别重难点,主看综合代码(1、指针形参2、引用形参3、二级指针形参4、指针引用形参)

Arduino MEGA驱动ILI9341与SD卡:SPI总线共享与BMP图片显示实战 SPI(串行外设接口)是一种高速、全双工的同步串行通信总线,广泛应用于微控制器与外围设备(如存储器、显示屏、传感器)的连接。其采用主从架构,通过共享的时钟线、数据线及独立的片选信号实现多设备分时复用,极大节省了硬件引脚资源。在嵌入式图形显示系统中,SPI的价值在于能够高效传输图像数据,是实现复杂人机交互界面的关键技术。典型的应用场景包括智能家居终端、工业仪表盘和便携式信息显示设备。本文聚焦于Arduino MEGA平台,详细解析如何利用一组SPI总线同时驱动ILI9341 TFT彩屏和SD卡模块,并深入探讨 阅读详情

2020-09-25C++学习笔记引用2:二级指针形参与指针引用搭配做形参的使用方法区别重难点,注意事项主看综合代码(1、指针形参2、引用形参3、二级指针形参4、指针引用形参)

1、指针引用

#include "iostream"
using namespace std;

struct Teacher
{
	char name[64];
	int age;
};

int getTe(Teacher **myp )
{
	Teacher *p = (Teacher *)malloc(sizeof(Teacher));
	
	if (p ==NULL)
	{
		return -1;
	}
	memset(p, 0, sizeof(Teacher));
	p->age = 33;

	*myp  = p; //
	return 0;
}

//指针的引用而已
int getTe2(Teacher*  &myp)
{
	myp = (Teacher *)malloc(sizeof(Teacher));
	myp->age = 34;

	return 0;
}

void main()
{
	Teacher *p = NULL;
	//getTe(&p);
	getTe2(p);

	printf("age:%d \n", p->age);
	system("pause");
}

2、常引用

2.1在C++中可以声明const引用

const Type& name = var;

const引用让变量拥有只读属性

2.2使用字面量常量初始化const引用

思考:

1、用变量对const引用初始化,const引用分配内存空间了吗?
2、用常量对const引用初始化,const引用分配内存空间了吗?

void main()
{
	const int b = 10;
	printf("b:%d", &b);

	//int &a1 = 19; 如果不加const编译失败
	const int &a = 19;
	printf("&a:%d \n", &a);

	system("pause");
}

综合代码

1、指针形参

2、引用形参

3、二级指针形参

4、指针引用形参

#include <iostream>
#include <string>
using namespace std;
/* 一级指针与引用的对比
 *
 */
struct student
{
	char *name;
	int age;
};
void yinyong(student &student1)
{
	student1.name=(char *)"xiaoming";
	student1.age=10;

	printf("name:%s,age:%d\n",student1.name,student1.age);
}
void zhizhen(student *student2)
{
	student2->name=(char *)"xiaohong";
	student2->age=12;

	printf("name:%s,age:%d\n",student2->name,student2->age);
}
/*二级指针与引用的对比
 */
int two_pinter(student **student3)
{

//	student3=new student;//这里分配的内存空间后来会被释放掉

	
//	if(student3==NULL) return -1;
	
	(*student3)->name=(char *)"xiaoli";
	(*student3)->age=10;
//	printf("name:%s,age:%d\n",(*student3)->name,(*student3)->age);
}//二级指针的另一种写法
int two_pinter1(student **student3)
{

	student *p=new student;//*p是常量,若p=studengt3,虽然*p是存储的students1的地址但它已不是指针类型,
						   //无法实现*p->name,*p->age,这个错误不能再犯	
	if(*student3==NULL) return -1;
	
	p->name=(char *)"xiaoding";
	p->age=12;

	*student3=p;
//	printf("name:%s,age:%d\n",(*student3)->name,(*student3)->age);
}
int  two_yinyong(student *&student4)
{
//	student4=new student;
//	if(student4==NULL) return -1;
	student4->name=(char *)"xiaoxiao";
	student4->age=18;
//	printf("name:%s,age:%d\n",student4->name,student4->age);
}
//常引用

int main(int argc,char *argv[])
{
	student students;
	student *students1=new student;//定义指针型形变量必须初始化。
//常引用
	char a=10;
	const char &m=a;
	char *p = (char *)&m;
    *p=11;
//	m=12;m为只读属性无法修改
	printf("a:%d,m:%d,*p:%d\n",a,m,*p);
//字面量常引用
	const char &n=20;
	printf("n:%d\n",n);
//	char &n=20;是 error
	yinyong(students);
	zhizhen(&students);
	two_pinter(&students1);
	printf("name:%s,age:%d\n",students1->name,students1->age);
	two_yinyong(students1);
	printf("name:%s,age:%d\n",students1->name,students1->age);
	two_pinter1(&students1);
	printf("name:%s,age:%d\n",students1->name,students1->age);
	return 0;
}

在这里插入图片描述

标题二级指针具体示意图

在这里插入图片描述

C++数据类型(一):一文看懂C++引用的本质 函数的参数传递方式主要有传值和传指针。在函数域中为参数分配内存,而把实参的数值传递到新分配的内存中。它的优点是有效避免函数的副作用。2.传指针这里有两种传递方式。(1)指针传递(2)引用传递。这里将引用也归类为指针,是有依据的。下面详细分析、寻找引用的本质。二.什么是引用?引用(reference)是C++中一种新的导出型数据类型,它又称别名(alias)。引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名,也就是C++系统不为引用类型变量分配内存空间。 阅读详情

相关推荐

风控IV、AUC、KS python计算代码

df_temp:数据集,Y:是否逾期标签,feas_list:需要计算IV的 变量。2、 按月和不同Y 下的 IV计算。

暮雨听轩的专栏 1610

引用的本质

引用的本质就是一个指针常量

weixin_43200943的博客 1919

数字IC设计——功耗分析

功耗是数字IC芯片的一个重要指标

知识,既贵,又便宜。 9333

C++ 引用的本质是什么?

结论: ①C++中的引用本质上是 一种被限制的指针(类似于线性表和栈,栈是被限制的线性表,底层实现相同,只不过逻辑上的用法不同而已)。 ②由于引用是被限制的指针,所以引用是占据内存的。 ③在使用高级语言的层面上,是没有提供访问引用的方法的。并且引用创建时必需初始化,创建后还不能修改。 下面是找到的相关资料,来证明以上结论。 ************************************************************************************

木牛的博客 3367

KUKA机器人 - 从开机到自动运行

注1:本文仅代表本人对机器人使用的一些建议,在使用机器人前,还请详细阅读库卡机器人官方资料,道路千万条,安全第一条!!! 注2:技术有限,欢迎各位大大在阅读过程中发现各类问题,并且批评指正!!! 目录 一、准备工作 1. 机器人上电完成 2. 电脑安装Workvisual 二、学习手动移动机器人 三、项目配置 1. 设置机器人IP地址 2.电脑和机器人通过网线连接 3.查找并打开项目 4. 通讯配置 5. 项目上传 6. 检验IO配置 四、编程 1.新建程序 2. 程序...

yilunyao的博客 1万+

光电容积脉搏波PPG信号分析笔记

脉搏波信号PPG分析笔记

teresa_zp的专栏 6468

C++的那些事:你真的了解引用吗

一、引用的本质是什么 说到引用,一般C++的教材中都是这么定义的: 1,引用就是一个对象的别名。 2,引用不是值不占内存空间。 3,引用必须在定义时赋值,将变量与引用绑定。 那你有没有想过,上面的定义正确吗?编译器是如何解释引用的? 这里先给出引用的本质定义,后面我们再进一步论证。 1,引用实际是通过指针实现的。 2,引用是一个常量指针。 3,引用在内存中占4个字节。...

weixin_34240520的博客 1211

Vscode搭配Keil Assistant插件,头文件红色波浪线终极修复指南

本文详细解析了Vscode搭配Keil Assistant插件时出现头文件红色波浪线问题的根源,即ARMCC与ARMCLANG编译器的兼容性问题,并提供了三种实用解决方案:复制文件夹、创建符号链接和手动配置includePath,帮助开发者彻底修复错误,恢复代码跳转和自动补全功能。

q1w3e5r7t9y的博客 344

引用的本质分析

引用的意义 (1)引用作为变量别名而存在,因此在一些场合可以代替指针 (2)引用相对于指针来说具有更好的可读性和实用性 #include <stdio.h> void swap(int& a, int& b) { int t = a; a = b; b = t; } int main() { int a = 1; int b = 2; swap(a, b); printf("a = %d, b = %d\n", a, b

weixin_46571142的博客 963

数学建模入门——数据预处理(全)

介绍了数据预处理的入门知识

n04j04h06的博客 4337

一分钟详解PCL中点云配准技术

原文首发于微信公众号「3D视觉工坊」: 一分钟详解PCL中点云配准技术 本文是对前两篇文章:点云配准(一 两两配准)以及3D点云(二 多福点云配准)的补充,希望可以在一定程度上帮助大家对点云配准理解地更为深刻。 一 PCL中点云配准技术的简单实现 在同一文件夹下,有测试数据文件monkey.ply,该文件是利用Blender创建的默认Monkey模型。 利用如下代码,将初始点云(图中绿色点云)...

3D视觉工坊 3698

【重学C++】【引用】一文看懂引用的本质与右值引用存在的意义

本文我们深入理解了引用的本质,以及学习了左值和右值的概念,还有右值引用存在的意义。对于左值和右值,我认为不需要去特别的区分,这是编译器的工作。我们更多需要做的,是

同学小张的博客 1520

【WRF-FDDA】观测 Obs nudging 的配置与使用说明(中)

WRF-FDDA

WW、forever的博客 274

C++ —— 理解引用及其原理

概念 引用的简单概念: 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 引用一般被使用做参数/返回值这样可以提高效率, 减少拷贝。 底层实现 在语言层面引用是一个对象的别名不占据空间, 但是实际上在底层的实现上引用是类似于指针实现的。 我们借助代码进行探索 int i=5; int &ri=i; ri=8; 通过:调试->窗口->反汇编 int i=5; 00A013DE mov dword

ifwecande的博客 1635

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C++ 引用本质

C++引用及其本质在C++中,引用是一项强大而灵活的特性,允许程序员通过引用访问和修改变量的值。本文将深入探讨C++引用的本质、用法、优势以及与指针的比较等方面。引用是C++中强大而灵活的特性,提供了一种直接而高效的方法来操作变量。通过引用,我们可以避免不必要的拷贝,简化代码结构,提高程序的效率。然而,在使用引用时需要注意生命周期和作用域,确保引用始终指向有效的对象。在适当的场景和使用情境下,引用是C++中不可或缺的一部分。

wuyiyu_的博客 546

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

深度分析c++引用的本质以及引用与指针的区别

引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟另外的内存空间进行存储,它与引用的变量共用的是同一块内存空间的地址。格式如下:类型& 引用变量名(对象名) = 引用实体;而此处的不是取地址操作符,而是起标志作用,标志所定义的标识符是个引用.int a = 1;int& b = a;//此处就是引用的定义return 0;此处就相当于变量a,b共用同一块内存地址空间。

kklovecode的博客 983

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

10.4 引用的本质

10.4 引用的本质 引用的本质其实是一个指针常量。 也就是说: int &b = a; 本质上是: int* const b = &a; 回想一下引用的一个特性(引用一旦确定了引用关系就不能改变)不难发现,这与指针常量的特性一样。指针常量也是不能再改变指针指向的地址。 ...

qq_32513033的博客 295

【C++】引用的本质:从“别名”到高效编程的利器

C++引用详解

Xie_sheng的博客 778

【C++】C++ 引用详解 ② ( 引用的意义 | 引用本质分析 | 引用的常量特征 | 引用所占内存空间与指针相同 | 引用在 C++ 编译器实现 | 引用编译时会自动翻译为常量指针 )

一、引用的意义 1、意义说明 2、引用与指针对比 二、引用本质分析 1、引用的常量特征 2、引用和变量都是相同的内存空间的别名 3、引用所占内存空间与指针相同 三、引用在 C++ 编译器实现 1、C++ 引用是常量指针 2、引用编译时会自动翻译为常量指针 3、引用与指针做形参分析 4、函数间接赋值 与 引用本质分析

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1238

C++中引用的本质分析

1,引用的意义: 1,引用作为变量别名而存在,因此在一些场合可以代替指针; 1,变量的另一个表现形式; 2,交换函数时,可代替指针; 2,引用相对于指针来说具有更好的可读性和实用性; 1,指针类似手动挡车,引用类似于自动挡车; 3,引用实现交换函数; 1,函数中的引用形参不需要进行初始化; 1,调用函数的时候才初始化; 2,const 引用: ...

weixin_45032957的博客 438

引用的本质是什么

引用的本质是什么引用的本质是什么引用的本质是什么

Major_S的博客 252

引用的本质,常量引用的作用,建议使用const的理由

引用的本质,常量引用的作用,建议使用const的理由

java领域博主 1789

深入浅出的剖析C++中引用的本质

深入浅出的分析引用有的来龙去脉,进而深入汇编语言探索引用的本质 目录 1、变量名的回顾 2、引用的本质 3、特殊的引用 - const引用 4、再谈引用的本质 5、深入汇编分析 6、指针变量的引用 7、其他注意事项 8、引用与函数 9、引用的意义 1、变量名的回顾 变量是一段连续存储空间的别名 程序中通过变量来申请并命名存储空间 通过变量的名字可以使用存储空间 问题:一段连续的存储空间只能有一个别名吗? 2、引用的本质 1、C++中做了一个升级,于是引用就出来了。引用可以看

木牛的博客 700

c++中引用的本质

c++中引用就是一个常指针,其也占用内存空间。 1)引用在C++中的内部实现是一个常指针 Type& name 《-》Type* const name 2)C++编译器在编译过程中使用常指针作为引用的内部实现,因此引用所占用的空间大小与指针相同。 3)从使用的角度,引用会让人误会其只是一个别名,没有自己的存储空间。这是C++为了实用性而做出的细节隐藏 具体点:如下: 1)...

一路向北 489

C++ 引用——引用的本质

本质:示例:

shuguang25800的博客 764
上一篇: 2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码)
下一篇: 转载【C】堆区和栈区的区别
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值