C++ Primer Plus 第七章笔记
目录
函数基本知识
没有返回值的函数:void函数
有返回值的函数:
函数原型
1.为什么需要函数原型?
2.函数原型的语法
3.函数原型的功能
按值传递函数参数
形参和实参
局部变量
参数问题
使用const指针参数
调用自身的函数(递归)
指向函数的指针
1.获取函数的地址
2.声明函数指针
3.使用函数指针来调用函数
函数基本知识
要使用C++函数必须完成的工作:
提供函数定义
提供函数原型
调用函数
定义函数:可将函数分为两类,没有返回值的函数和有返回值的函数
没有返回值的函数:void函数
void FunctionName(parameters)
{statement(s)return; // option
}
其中,FunctionName是函数名,parameters是参数列表。由于void函数没有返回值,因此在函数体中不需要使用return语句。void函数一般用于执行某个操作、产生某个副作用或输出结果等,而不需要返回任何值。
有返回值的函数:
有返回值的函数将生成一个值,并将它返回给调用函数。
通用的格式:
typeName FunctionName(parameterList)
{statementsreturn value
}
对于返回值的函数,必须使用 返回语句
以便将值返回给调用函数。
值 - - - - 可以是 常量、变量、表达式
。返回结果的类型必须是 typeName 类型
或 可以转换为typeName
。
C++对返回值的类型有一定的限制:不能是数组
。也可以是 其他的任何类型(整数、浮点数、指针、甚至是结构和对象)
。
函数定义命令被调用函数应返回什么类型的数据。
函数原型
1.为什么需要函数原型?
原型描述了函数
到编译器
的接口
,也就是将函数返回值的类型
以及参数的类型
和数量
告诉编译器。
避免使用函数原型的办法:在首次使用函数之前定义。
2.函数原型的语法
函数原型就是一个语句
。必须以 分号(;)
结束。
最简单的办法:复制
函数中的函数头
,然后添加分号。
对于函数原型不要求提供变量名
,有类型列表
即可。
而函数的参数列表
中,可以包括变量名、也可以不包括,原型中的变量名相当于占位符,可以不和函数定义中的变量名相同。
3.函数原型的功能
- 编译器正确处理
函数返回值
。 - 编译器检查使用的
参数数目
是否正确。 - 编译器检查使用的
参数类型
是否正确。如果不正确,则转换为正确的类型
。
按值传递函数参数
形参和实参
用于接收传递值
的变量被称为形参
。传递给函数的值叫做实参
。
在C++标准中,使用参数(argument)
来表示实参
,而参量(parameter)
来表示形参
。所以,参数传递就是 将参数
赋给参量
。
局部变量
在函数中声明的变量(包括参数)为该函数私有。
在函数被调用
时,计算机为其变量分配内存
,函数结束
,就释放内存
。这种变量叫做局部变量。
参数问题
函数可以有多个参数,在调用函数是,使用逗号分隔开。
如果函数的两个参数的类型相同,则必须分别指明每个参数的类型,不可以像声明常规变量那样组合在一起。
按值传递函数参数是C++中最常用的函数参数传递方式之一。这种方式会把实参的值复制一份传递给函数,并在函数内对复制的值进行操作。按值传递的函数参数定义格式如下:
void FunctionName(Type parameter)
{// function body
}
其中,FunctionName是函数名,Type是参数的类型,parameter是参数的名称。
使用const指针参数
在C++中,可以将指针声明为const指针。const指针是指针常量,其指向的地址是固定的,不可以被改变。同时,也可以将指向const数据的指针声明为const指针,即指向const数据的指针常量。这种指针在函数参数中被用到时,被称为const指针参数。
使用const指针参数可以防止函数内部对指针所指向的数据进行修改,在一些需要保护数据的情形下使用,提高代码的安全性。
调用自身的函数(递归)
函数调用自身的过程被称为递归。递归函数应该遵循以下两个重要的规则:
1.基本情况(也称作递归终止条件):递归函数必须包含一个基本情况,当满足该情况时,递归将停止调用自身。
2.递归情况:递归函数必须包含一个递归情况,当满足该情况时,函数将调用自身。
指向函数的指针
1.获取函数的地址
获取函数地址的方式:使用函数名(后面不带参数)
即可。
要将函数作为参数传递
,必须传递函数名
。一定要区分传递的是函数地址还是函数的返回值。
2.声明函数指针
声明指向某种数据类型的指针时,必须指定指针指向的类型
。
对于函数而言,声明指向函数的指针时,也必须指定指针指向的函数类型
。也就是说,声明应像函数原型
一样指出函数的信息。
3.使用函数指针来调用函数
使用指针来调用被指向的函数。
相关文章:
C++ Primer Plus 第七章笔记
目录 函数基本知识 没有返回值的函数:void函数 有返回值的函数: 函数原型 1.为什么需要函数原型? 2.函数原型的语法 3.函数原型的功能 按值传递函数参数 形参和实参 局部变量 参数问题 使用const指针参数 调用自身的函数…...
常用数据库的 API - 开篇
API API 这个词在大多数人看来可能和 CNS 差不多,前者天天听说就是用不上,后者天天读就是发不了。 不过,通过今天的一个简短介绍,今后 API 这个东西你就用上了,因为在文章最后我将会展示一个最最基础且高频的 API 使…...
C++之生成详细汇编代码(二百一十六)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
AIGC|当一个程序员学会用AI来辅助编程实践
一、辅助编程 作为主要以 JAVA 语言为核心的后端开发者,其实,早些时间我也用过比如 Codota、Tabnine、Github 的 Copilot、阿里的 AI Coding Assistant 等 IDEA 插件,但是我并没有觉得很惊奇,感觉就是生成一些代码片段罢了&#x…...
9.14号作业
仿照vector手动实现自己的myVector,最主要实现二倍扩容功能 有些功能,不会 #include <iostream>using namespace std; //创建vector类 class Vector { private:int *data;int size;int capacity; public://无参构造Vector(){}//拷贝构造Vector(c…...
【面试题】C/C++ 中指针和引用的区别
指针是一个独立的对象,它可以指向不同的变量或对象,可以重新赋值给其他变量。而引用是已存在的变量的别名,它必须在定义时初始化,并且不能重新绑定到另一个变量。指针可以是空指针(nullptr),它不…...
spring boot 整合多数据源
多数据源产生的场景 一般情况下,不会有多数据源这样的场景出现,但老项目或者特殊需求的项目,可能会有这样的场景 同一个应用需要访问两个数据库不用数据库中间件的读写分离 注入数据源选择的时机 声明两个数据源实例,在getConnect…...
数据集成:数据挖掘的准备工作之一
⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…...
xml配置文件密码特殊字符处理
错误姿势: 正确姿势:采取转义符的方式 常用转义符:...
遥感数据与作物模型同化
基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具,可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系,为不同条件下作物生长发育及产量预测、栽培管理、环境评价以及未来气候变化评估等提供了…...
UI库DHTMLX Suite v8.2发布全新表单组件,让Web表单实现高度可定制!
DHTMLX Suite v8.2日前已正式发布,此版本的核心是DHTMLX Form,这个小部件接收了4个备受期待的新控件,如Fieldset、Avatar、Toggle和ToggleGroup。官方技术团队还为Grid和TreeGrid小部件中的页眉/页脚工具提示提供了一系列新的配置选项等。 在…...
河北省图书馆典藏《乡村振兴振兴战略下传统村落文化旅游设计》许少辉八一新著
河北省图书馆典藏《乡村振兴振兴战略下传统村落文化旅游设计》许少辉八一新著...
什么是卷积002
文章目录 前言1.卷积网络和传统网络区别2.卷积神经网络整体架构1.输入层2. 卷积层3.池化层4.全连接层 5.神经网络6.经典网络1.Alexnet2. Vgg3.Resnet 残差网络-特征提取 7.感受野 前言 大纲目录 首先链接图像颜色通道 1.卷积网络和传统网络区别 右边的就是CNN,卷…...
黑马JVM总结(八)
(1)StringTable面试题 1.8 1.6时 (2)StringTable的位置 jvm1.6时StringTable是常量池的一部分,它随着常量池存储在永久代当中,在1.7、1.8中从永久代变成了堆中,为什么做这个更改呢?…...
开源网安入选广东省网络空间安全标准化技术委员会新技术及应用安全技术工作组成员单位
近日,第二届广东省网络空间安全标准化技术委员会(GD/TC 124)(以下简称省网安标委)正式成立。为进一步发挥省网安标委在支撑网络强国建设、推进网络安全产业高质量发展过程中,示范引领核心技术攻关、创新产品…...
Nginx配置指南:如何定位、解读与优化Linux上的Nginx设置
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: 📚…...
辉瑞与吉利德科学:制药巨头的新冠病毒之战
来源:猛兽财经 作者:猛兽财经 总结: (1)猛兽财经认为,华尔街低估了辉瑞(PFE)和吉利德科学(GILD)的前景,因为它们在开发新冠病毒疫苗和药物方面都…...
x86架构基础汇编知识
通用寄存器 EAX 32位 函数返回值 AX 低16位 AH 高八位 AL 低八位 EBX 32位 ECX 32位 循环次数,this指针 EDX 32位 EBP 32位 栈底寄存器 ESP 32位 栈顶寄存器 ESI 源索引寄存器 EDI 目标索引寄存器 EIP 无法直接通过汇编操作 例子 mov al,0xff …...
ThreadLocal的原理
ThreadLocal是Java中的一个类,它提供了线程本地变量的功能。每个线程都可以独立地访问自己的ThreadLocal变量,并且不会受到其他线程的干扰。 public class ThreadLocal<T> { ThreadLocal的原理是通过使用一个ThreadLocalMap来存储每个线程的变量副…...
Chrome 108版(64-bit 108.0.5359.125)网盘下载
还在用Selenium的朋友们注意了,目前Chrome的最新版是116,而官方的Chromedriver只支持到115版。 可惜Google不提供旧版Chrome的下载方式,需要旧版的很难回去了。如果真的想要旧版的Chrome,只能民间自救。 我在2022年12月备份了C盘…...
Mars3d插件参考开发教程并在相关页面引入
问题场景: 1.在使用Mars3d热力图功能时,提示mars3d.layer.HeatLayer is not a constructor 问题原因: 1.mars3d的热力图插件mars3d-heatmap没有安装引用。 解决方案: 1.参考开发教程,找到相关的插件库:Mars3D 三维…...
Windows 性能突然打鸡血,靠 Bug 修复了多年顽疾
要说 的 Bug 集中地,当属资源管理器。 速度缓慢、卡顿、崩溃,不同设备、不同版本的用户都有不同的感受。 严格来说,这其实是 Windows 的传统艺能,要完美修复可不容易。 而作为小老弟的文件资源管理器,时不时来个无响…...
亚马逊封买家账号的原因有哪些
亚马逊可能封锁买家账号的原因有多种,主要是出于保护市场和维护平台秩序的考虑。以下是一些可能导致亚马逊封锁买家账号的常见原因: 1、涉及违规行为:如果买家违反了亚马逊的使用政策,如发表虚假评价、滥用退货政策、欺诈或盗窃等…...
1.0零基础尝试DCM通讯(c-store)
前言 本项目是对医院放疗及相关设备的互通互联。对dcm文件及数据协议是本项目的基础。 今天在项目组成员支持下,对dcm通讯进行了初步的尝试,有人之路,这个过程可以说是非常愉快,于是乎准备将这个愉快的过程记录,方便自己查阅和后来人。 c-store 本次的安装和测试使用的…...
vue之封装tab类组件
vue之封装tab类组件 vue之封装tab类组件CSS样式方面JS方面 vue之封装tab类组件 需求:点击【上一步】、【下一步】按钮,切换tab,且有淡入浅出的动画。 CSS样式方面 <div class"parent"><div class"childDiv" id…...
固定资产管理中净值怎么算
在资产管理的领域中,我们经常听到“净值”这个词。然而,对于许多人来说,净值的概念仍然模糊不清。本文将试图揭示固定资产管理的净值计算方法,并提供一些创新的观点。 我们需要明确什么是净值。在财务术语中,净值是…...
SQlite操作后如何正确退出
在 C 语言中,使用 SQLite 库进行数据库操作后,可以通过以下步骤来正常退出和关闭 SQLite 连接: 关闭数据库连接:在完成数据库操作后,使用 sqlite3_close() 函数来关闭 SQLite 连接。该函数接受一个指向 sqlite3 数据库…...
phpcmsV9.6.0sql注入漏洞分析
目录 前言 环境准备 漏洞点 看一看parse_str函数 看一看sys_auth函数 看一看get_one函数 全局搜索sys_auth($a_k, ENCODE) 查看哪里调用了 set_cookie 查看safe_replace函数 判断登录绕过 index的业务 加载modules/wap/index.php 加载modules/attachment/attachme…...
深入理解正则表达式:高效处理文本数据的利器
💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 引言 正则表达式是一种…...
张雪峰说网络空间安全专业
网络空间安全专业是一个涵盖了计算机科学、信息安全、法律等多个领域的学科,旨在研究保护网络空间的信息系统和数据不被非法侵入、破坏、篡改、泄露的技术和管理手段。 网络安全专业的重要性 随着网络技术的发展,网络安全问题也日益凸显,黑客…...
渭南网站建设wifi/建站开发
接口平台需要解决的一个重要的问题就是让用户更加高效管理环境,这个也是可以体现平台对比直接代码脚本其中一个重要的优势 功能模块 抽取需要在全局管理的功能模块如下: 1. 全局变量 配置全局变量信息,该变量在该项目所有地方均可使用 重…...
旅行社电商网站怎么做/手机百度app
目录原理图DS1302原理图 新人求赞 😃 谢谢大家 主控芯片原理图 DS1302 DS1302 修订:模块化代码里面,InitLcd1602()这一个函数在最开始版本里面,因为原理图的VCC里面是接了电池的,但是我的实物里面是没有接电池的…...
攀枝花市住房和城乡建设局网站/爱用建站官网
canvas的绘制是以画布大小为准的。 canvas的默认画布大小为300150。 设置canvas画布大小的方法: // 方法一 <canvas id"test" width"100px" height"100px"></canvas>// 方法二 <canvas id"test"></…...
爱心互助网站开发/南宁seo服务公司
RDBMS 12.2.0.1 在AWR中出现等待事件enq: RO - fast object reuse、enq: CR - block range reuse ckpt、log buffer space等。 分析这些等待事件,主要原因还是做了大量的drop 和truncate,引起了主要的等待事件enq: RO - fast object reuse,…...
手机网站开发样板/海外建站
在Centos7系统中 firewalld 服务取代了 iptables 服务。 防火墙状态 #防火墙是否开启,running表示运行中,not running表示关闭 firewall-cmd --state 启动/关闭防火墙 #开启防火墙 systemctl start firewalld.service #关闭防火墙 systemctl stop fi…...
wordpress汉化客户端/新闻头条今日新闻
查不到的,只有你自己感觉比之前最开始买的时候,嗯耗电比较快的话,那就是损耗比较大了。安卓手机都没有查看电池损耗的软件,市场上那些软件都是假的。小米手机本身是2113不支持查看电池损耗5261的,需要借助第三方软件才…...