C++(二十二)

server/2025/1/19 11:28:29/

前言:

本文承接上文,将详细讲述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/server/159610.html

相关文章

晨辉面试抽签和评分管理系统之十三:如何让不同批次、同一组别的面试考生抽到连续的号码?

晨辉面试抽签和评分管理系统&#xff08;下载地址:www.chenhuisoft.cn&#xff09;是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…

家政服务小程序,打造智慧家政新体验

春节即将来临&#xff0c;家政市场呈现出了火热的场景&#xff0c;大众对家政服务的需求持续增加。 近年来&#xff0c;家政市场开始倾向数字化、智能化&#xff0c;借助科学技术打造家政数字化平台&#xff0c;让大众在手机上就可以预约家政服务&#xff0c;减少传统家政市场…

【C#】将信息输出到 Visual Studio 的输出窗口的几个方式

在 WinForms 项目中&#xff0c;可以通过使用 System.Diagnostics.Debug 或 System.Diagnostics.Trace 类将信息输出到 Visual Studio 的输出窗口。这两者之间的主要区别在于&#xff0c;Debug 仅在调试模式下有效&#xff0c;而 Trace 则在调试模式和发布模式下都有效。 方法…

项目练习:若依系统数据导出功能-Vue前端部分

文章目录 一、设计说明二、代码实现1、package.json2、ruoyi.js3、request.js4、main.js中挂载download方法5、使用案例 一、设计说明 web系统的数据导出功能是必备的。 所以&#xff0c;这个功能设计要满足以下要求 1、全局可用。 2、参数&#xff1a;下载的接口地址&#xf…

基于 Java Spring Boot 开发的项目复盘与技术总结

基于 Java Spring Boot 开发的项目复盘与技术总结 在近期的项目开发中&#xff0c;我们团队大规模采用了 Java Spring Boot 框架&#xff0c;整个过程充满了挑战与收获。在此&#xff0c;对这次项目开发进行复盘总结&#xff0c;希望能为大家在 Spring Boot 开发实践中提供一些…

Multi-Pass 迭代器

The multi pass iterator - 1.87.0 Multi-Pass 迭代器 Spirit.Qi 的回溯与迭代器类型要求 在 Boost.Spirit.Qi 中&#xff0c;解析回溯需要以下几种迭代器类型之一&#xff1a;前向迭代器&#xff08;forward iterator&#xff09;、双向迭代器&#xff08;bidirectional it…

实战指南:使用Wireshark捕获并解密HTTPS数据包

在网络安全和数据分析领域&#xff0c;捕获和分析网络数据包是理解网络行为、诊断问题和进行安全审计的重要手段。HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;作为现代Web通信的主要协议&#xff0c;通过SSL/TLS加密确保了数据的安全传输。然而&#xff…

PP-OCR系统

我看书上的只到v2系统&#xff0c;所以我这里也只介绍V2&#xff0c;实际上他的包&#xff0c;我看了&#xff0c;已经出到V4了 整个系统包括&#xff0c;文本检测&#xff0c;方向分类&#xff0c;最后进行文本识别 PP-OCRV2改进如下&#xff1a; • 检测模型优化: (1) 采用…