C++ 编程基础(4)函数 | 4.1、函数概述

文章目录

  • 一、函数概述
    • 1、声明与定义
    • 2、函数传参
      • 2.1、传递值
      • 2.2、传递引用
    • 3、函数指针
      • 3.1、定义
      • 3.2、函数指针声明

前言:

在C++编程语言中,函数是执行特定任务或计算值的独立代码块。它们是构建程序逻辑、实现模块化和代码重用的基石。通过函数,开发者可以将复杂的程序分解为更小、更易管理的部分,从而提高代码的可读性、可维护性和可测试性。

一、函数概述

1、声明与定义

在C++中,函数通过函数定义来创建,其语法包括返回类型、函数名、参数列表(可选)和函数体。例如:

int add(int a, int b) {  return a + b;  
}

2、函数传参

C++中函数传参方式有两种:传递值传递引用,如下:

2.1、传递值

传值传递是最基本也最常用的参数传递方式。在这种方式下,函数的形参是实参的一个副本。这意味着在函数内部对形参的任何修改都不会影响到实参。例如:

void func(int value) {  value = 10; // 修改形参,不会影响实参  
}  int main() {  int x = 5;  func(x);  std::cout << x; // 输出5,实参未被修改  return 0;  
}

2.2、传递引用

传引用传递允许函数直接访问和修改实参本身,而不是它的副本。这是通过传递实参的引用来实现的。例如:

void func(int& ref) {  ref = 10; // 修改形参,实参也会被修改  
}  int main() {  int x = 5;  func(x);  std::cout << x; // 输出10,实参被修改  return 0;  
}

3、函数指针

3.1、定义

函数指针是指向函数的指针变量。 因此函数指针本质上是一个指针变量,只不过该指针变量指向函数。C/C++中,每一个函数都有一个入口地址,函数指针就指向函数的入口地址,可以通过函数指针来调用函数。例如:

int func(int x, int y) {cout << x << ":" << y << endl;return 0;
}int main() {// pfnFunc保存的就是func函数地址,pfnFunc与func值是一样的int (*pfnFunc)(int x,int y) = func;printf("%p\n", pfnFunc);printf("%p\n", func);return 0;
}

输出结果

00401350
00401350Process returned 0 (0x0)   execution time : 0.069 s
Press any key to continue.

3.2、函数指针声明

函数指针的声明方法为:返回值类型 ( * 指针变量名) ([形参列表])。常用的声明函数指针的方式有下面两种

// 方法一:声明一种函数指针类型(该方法比较常用)
typedef int (*TEST_FUNC)(int, int);int func(int x, int y) {cout << x << ":" << y << endl;return 0;
}int main() {TEST_FUNC cb = func;(cb)(10, 20);// 方法二:定义一个函数指针变量int (*pfnFunc)(int x,int y) = func;// 通过指针调用函数pfnFunc(10, 20);(*pfnFunc)(10, 20);return 0;
}

注意: 通过函数指针调用函数时,(*pfnFunc)与pfnFunc等价。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/463944.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RuoYi 样例框架运行步骤(测试项目自用,同学可自取)

目录 后台 API 运行导入&#xff0c;下载包端口号mysql 准备运行 PC&#xff08;电脑端&#xff09;运行安装 nodejs安装 yarn 及其依赖&#xff0c;启动服务登录admin(admin123) 或 ry(admin123) App&#xff08;移动&#xff09;运行下载 HBuilderX运行app运行注意&#xff1…

Puppeteer点击系统:解锁百度流量点击率提升的解决案例

在数字营销领域&#xff0c;流量和搜索引擎优化&#xff08;SEO&#xff09;是提升网站可见性的关键。我开发了一个基于Puppeteer的点击系统&#xff0c;旨在自动化地提升百度流量点击率。本文将介绍这个系统如何通过模拟真实用户行为&#xff0c;优化关键词排名&#xff0c;并…

项目解决方案:跨不同的物理网络实现视频监控多画面的实时视频的顺畅访问

目录 一、碰到的需求问题 二、需求分析 三、方案分析 &#xff08;一&#xff09;方法1&#xff1a;使用HTTP代理 1. 安装HTTP代理服务器 2. 配置Nginx代理 3. 重启Nginx 4. 访问视频流 &#xff08;二&#xff09;方法2&#xff1a;使用反向代理 1. 安装反向代理服务…

MQTT自动发送消息工具(自动化测试MQTT)

点击下载《MQTT客户端服务端工具》 点击下载《MQTT自动发送消息软件(自动化测试MQTT)》 1. 前言 在软件开发过程中&#xff0c;MQTT常被用作消息队列来完成特定的业务功能。当我们将相关业务代码编写完成后&#xff0c;通常需要编写额外的消息生产和消费代码来模拟消息高峰时…

东北虎豹国家公园shp格式范围

东北虎豹国家公园地处中国吉林、黑龙江两省交界的老爷岭南部&#xff08;珲春—汪清—东宁—绥阳&#xff09;区域&#xff0c;东起吉林省珲春林业局青龙台林场&#xff0c;与俄罗斯滨海边疆区接壤&#xff0c;西至吉林省大兴沟林业局岭东林场&#xff0c;南自吉林省珲春林业局…

练习LabVIEW第三十七题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第三十七题&#xff1a; 利用XY GRAPH 构成李萨如图形 开始编写&#xff1a; 前面板放一个XY图控件&#xff0c;程序框图…

Pandas 数据可视化指南:从散点图到面积图的全面展示

Pandas 数据可视化指南&#xff1a;从散点图到面积图的全面展示 本文介绍了使用 Pandas 进行数据可视化的多种方法&#xff0c;包括散点图、折线图、条形图、直方图、饼图和面积图等&#xff0c;涵盖了常见的图表类型及其实现方式。通过提供详细的代码示例&#xff0c;展示了如…

Solana链上的Pump狙击机器人与跟单机器人的工作原理及盈利模式

随着加密货币市场的快速发展&#xff0c;越来越多的投资者和开发者开始关注Solana链上的自动化交易工具。尤其是Pump狙击机器人和跟单机器人&#xff0c;这两种工具为用户提供了在市场波动中获取利润的机会。本文将深入分析这两种机器人的工作原理及其盈利模式。 一、Pump狙击机…

嵌入式操作系统FreeRTOS

系列文章目录 嵌入式操作系统FreeRTOS 嵌入式操作系统FreeRTOS 系列文章目录一、FreeRTOS 一、FreeRTOS 首先看一下 FreeRTOS 的名字&#xff0c;可以分为两部分&#xff1a;“Free”和“RTOS”&#xff0c;“Free”就是免费的、自由的、不受约束的意思&#xff0c;“RTOS”全…

客如云:大型业务报表的分区化改造提升性能|OceanBase 应用实践

一 概述 1 背景 在过去两到三年的时间里&#xff0c;客如云的KPOS产品在商户数量和订单量均实现了数倍的增长&#xff0c;充分展示了产品的市场吸引力和业务模式的成功。然而&#xff0c;随着更多的大型连锁商户的加入&#xff0c;客如云商家平台迎来了前所未有的挑战。特别是…

Vue2指令原理手写

文件结构 index.js /** Author: RealRoad* Date: 2024-10-31 17:13:50* LastEditors: Do not edit* LastEditTime: 2024-10-31 17:15:57* Description: * FilePath: \project_10_08\vite-project\src\testVue\index.js*/ import Vue from ./Vue.js window.VueVue Vue.js imp…

手游和应用出海资讯:可灵AI独立APP即将上架;Rollic在英国推出芭比合并解谜手游

NetMarvel帮助游戏和应用广告主洞察全球市场、获取行业信息&#xff0c;以下为10月第四周资讯&#xff1a; ● 苹果开发全新游戏中心应用 ● Meta计划开发人工智能搜索引擎 ● 微软已拥有20个游戏IP&#xff0c;收入达10亿美元 ● OpenAI计划在12月推出其下一代前沿模型Orion ●…

笔记-利率学习记录

利率、通货膨胀与经济运行 利率政策的经济效应 假设所有利率一样&#xff0c;把利率降到 0 会带来一系列影响&#xff1a; 降低储蓄意愿&#xff1a;随着利率接近于 0&#xff0c;人们存钱的收益减少&#xff0c;倾向于消费和投资。增加企业盈利&#xff1a;融资成本降低&…

九,数据类型存储

1、简单类型与复杂类型 简单类型又叫做基本数据类型或者值类型&#xff0c;复杂类型又叫做引用类型 值类型&#xff1a;简单数据类型/基本数据类型&#xff0c;在存储时变量中存储的时值本身&#xff0c;因此叫做值类型 string、number、boolean、undefined、null 注意&…

电通旗下VeryStar连摘Campaign 亚太科技MVP及鼎革奖两项大奖

近日&#xff0c;电通CXM&#xff08;客户体验管理&#xff09;旗下费芮互动VeryStar开发的OmniRetail零售数字化平台及其中的OmniCRM分别摘得重磅奖项。OmniCRM在Campaign亚太2024年度亚太地区Tech MVP中当选“最有价值科技产品”&#xff0c;OmniRetail荣获“2024「鼎革奖」数…

[ 应急响应靶场实战 ] VMware 搭建win server 2012应急响应靶机 攻击者获取服务器权限上传恶意病毒 防守方人员应急响应并溯源

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

「Mac畅玩鸿蒙与硬件17」鸿蒙UI组件篇7 - Animation 组件基础

在应用开发中&#xff0c;动画效果可以增强用户体验。鸿蒙框架提供了 translate、scale 和 rotate 等动画功能&#xff0c;允许对组件进行平移、缩放和旋转等操作。本篇将介绍 Animation 组件的基础知识和示例代码。 关键词 Animation 组件动画效果位置动画自动动画缩放动画 一…

2024年一带一路金砖技能大赛之大数据容器云开发

10.31备赛准备 C模块&#xff0c;大数据应用开发 1.前端Vue----请求服务端api接口json数据-----展示/图表 2.Node.js实现后端开发&#xff0c;为前端vue提供接口数据 3.部署在docker中 官方技能需求 创建vue框架项目 1、安装node.js&#xff08;https://nodejs.org/zh-cn/d…

C++ 内存对齐:alignas 与 alignof

一、什么是内存对齐&#xff1f; 内存对齐是指数据在内存中按照特定的字节边界存储。一般情况下&#xff0c;处理器从内存读取数据时会更高效地读取对齐的数据。如果数据未对齐&#xff0c;处理器可能需要进行额外的内存访问&#xff0c;导致性能下降。对于某些平台&#xff0…

嵌入式linux系统中串口驱动框架分析

大家好,今天主要给大家分享一下,如何使用linux系统中的串口实现。 第一:串口基本简介 串口是很常见的一个外设,在Linux下通常通过串口和其他设备或传感器进行通信。根据电平的不同,串口可以分为TTL和RS232。不管是什么样的电平接口,驱动程序是一样的。 第二:Linux下UAR…