C++(二十二)

ops/2025/1/19 9:45:26/

前言:

本文承接上文,将详细讲述C++中,参数与指针。

一,无响应参数。

首先复习一下之前曾学习过的函数:

void change(int a,int b) 
{
int temp;
temp=a;
a=b;
b=temp;
}

看起来是一个简单的交换a与b值的函数。

完整代码为:

# include <iostream>
using namespace std;
void change(int a,int b);
int main(){
int a=10,b=20;
cout<<"Before swapping a= "<<a<<" b= "<<b<<endl;
change(a,b);
cout<<"After swapping a= "<<a<<" b= "<<b<<endl;
return 0;
}
void change(int a,int b) 
{
int temp;
temp=a;
a=b;
b=temp;
}

按理来说,已定义a=10,b=20,并且使用了change函数来交换a与b的值,但实际上输出为:

a与b的值并没有真的进行了交换。

二,函数的值传递与引用传递。

这是因为在C++中,函数参数是通过值传递的,即函数内部对参数的修改不会影响到函数外部的变量。因此,change函数内部的交换操作不会影响到main函数中的ab

change函数仅交换了形式参数,即change里的a与b,与实际参数:main函数中的值无关。

一般的值传递无法改变调用源的实际参数。

但如果使用指针,调用函数时就可以改变指定参数的值。具体代码如下:

void change(int *Pa,int *Pb){int temp = *Pa;*Pa = *Pb;*Pb = temp;
}

全部代码为:

# include <iostream>
using namespace std;
void change(int *Pa,int *Pb);//声明函数change
int main(){int a = 10,b = 20;cout<<"变量a和b的初始值: "<<a<<" "<<b<<endl;change(&a,&b);//调用函数changecout<<"变量a和b的交换值: "<<a<<" "<<b<<endl;return 0;
}
//定义函数change
void change(int *Pa,int *Pb){int temp = *Pa;*Pa = *Pb;*Pb = temp;
}

运行结果为:


http://www.ppmy.cn/ops/151347.html

相关文章

SpringBoot Starter 通用接口加密组件(防篡改)+ RequestBodyAdvice和ResponseBodyAdvice原理

实现参考博客&#xff1a; RequestBodyAdvice和ResponseBodyAdvice原理&#xff1a; RequestBodyAdvice和ResponseBodyAdvice原理详解-CSDN博客 SpringBoot Starter 通用接口加密组件&#xff08;防篡改&#xff09;&#xff1a; SpringBoot Starter 通用接口加密组件_spri…

Redis 部署模式

Redis 提供了三种部署模式&#xff1a;单兵模式、哨兵模式、和 集群模式&#xff0c;每种模式有不同的特点和适用场景。下面分别介绍这三种模式。 1. 单兵模式&#xff08;Standalone&#xff09; 单兵模式是最简单的 Redis 部署模式&#xff0c;适合对高可用性要求不高的场景…

第10篇:从入门到精通:深入理解Python继承与多态的概念及应用

第10篇&#xff1a;继承与多态 内容简介 本篇文章将深入探讨Python中的继承与多态概念。您将学习如何通过类的继承实现代码的重用&#xff0c;掌握方法重写的技巧&#xff0c;了解如何使用super()函数调用父类的方法&#xff0c;并探索多态的实现与应用。通过丰富的代码示例&…

1.9 提示学习(Prompt Learning)之思维链(Chain-of-Thought, CoT):开山之作

提示学习(Prompt Learning)之思维链(Chain-of-Thought, CoT):开山之作 近年来,人工智能领域取得了巨大进步,尤其是在自然语言处理(NLP)方面。随着GPT模型的发展,如何有效地引导模型生成高质量的回答成为了学术界和工业界的重要研究课题。在这一过程中,**思维链(Ch…

Microi 吾码:低代码解锁服务器虚拟化的无限潜能

目录 一、服务器虚拟化的时代浪潮与核心意义 二、Microi 吾码在服务器虚拟化资源管理中的卓越表现 虚拟机资源分配与监控的智能掌控 资源调度与优化的精妙策略 三、Microi 吾码助力服务器虚拟化的网络配置与优化 虚拟网络架构的灵活构建 网络流量优化与安全保障的双重守…

2.3 表示学习与嵌入(Embedding):理解和优化数据表示

表示学习与嵌入(Embedding):理解和优化数据表示 在计算机科学和人工智能领域,表示学习(Representation Learning)和嵌入(Embedding)是两项关键技术。它们通过将复杂的数据转化为更易于计算机处理的形式,帮助我们提高机器学习模型的性能,特别是在处理高维复杂数据时,…

Mockito+PowerMock+Junit单元测试

一、单元测试用途 1、日常开发团队要求规范&#xff0c;需要对开发需求代码进行单元测试并要求行覆盖率达到要求&#xff0c;DevOps流水线也会开设相关门禁阀值阻断代码提交&#xff0c;一般新增代码行覆盖率80%左右。 二、Mock测试介绍 1、Mock是为了解决不同的单元之间由于…

Hausdorff 距离

Hausdorff 距离 本文的内容主要围绕目标定位经典工作 Locating Objects Without Bounding Boxes 展开&#xff0c;着重于介绍 Hausdorff Distance 相关的知识。 论文&#xff1a;https://openaccess.thecvf.com/content_CVPR_2019/html/Ribera_Locating_Objects_Without_Boun…