当前位置: 首页 > article >正文

C++中的函数知识点大全

函数的定义不能嵌套但调用可以嵌套在函数调用时如某一默认参数要指明一个特定值则有其之前所有参数都必须赋值赋默认实参时 一旦某个形参被赋予了默认值它后面的所有形参都必须有默认值因为设置默认参数的顺序是自右向左且注意默认值不可以是局部变量函数参数的默认值可以是表达式如果在函数定义时设置了默认参数则就不能在函数声明时再次设置反之亦然函数只有一个 返回值除void类型函数函数调用可以出现在执行语句中也可以出现在表达式中甚至还可以作为一个函数的实参但不可作为函数的形参因为函数返回值存在寄存器中, 没有地址, 不能作为形参函数是一种特殊的数据类型正确当函数不是void类型且函数体内没有return语句时此时函数的返回值与返回类型相同但内容却是随机的一个值C所有的函数本质上都是外部函数可延申至其他文件中使用故extern关键字可省略如果函数的形参是指向普通变量的指针变量实参只能用指向普通变量的指针不能用指向const变量的指针反之则都可以用当函数自变量个数不确定时系统不自动检测自变量函数三种传参① 值传递会为形参重新分配内存空间 将实参的值拷贝给形参形参的改变不会影响实参的值函数被调用结束后形参被释放。② 地址的传递形参为指针变量将实参的地址传递给函数可以在函数中改变实参的值。调用时为形参指针变量分配内存结束时释放指针变量。③ 引用传递不会为形参重新分配内存空间形参只是实参的别名形参的改变只会影响实参的值函数调用结束后形参不会被释放。二函数的使用建立自定义函数调用时只需要明白函数的功能即可故提高了程序的可读性sizeof 返回的值表示的含义如下单位字节​ 数组 —— 编译时分配的数组空间大小​ 指针 —— 存储该指针所用的空间大小存储该指针的地址的长度是长整型应该为 4 ​ 类型 —— 该类型所占的空间大小​ 对象 —— 对象的实际占用空间大小​ 函数 —— 函数的返回类型所占的空间大小。函数的返回类型不能是 voidsizeof(float)是(整型)类型表达式Math.floor() 表示向下取整返回double类型​ Math.ceil() 表示向上取整返回double类型​ Math.round() 四舍五入返回int类型用户可以重载不能重定义标准库函数若如此该函数将失去原有含义但若已包含标准库头文件及相关命名空间则系统不允许用户重新定义标准库函数因为两个相同作用域内的函数 如果除了返回值类型外 的函数要素都相同 那么编译器会报重定义错误函数返回值作为右值被const修饰无效故此时const相当于没修饰如果参数类型不一致则函数调用时按形参类型隐式类型转换实参main函数默认返回一个int类型的值将一个字符串传递到函数中传递的是地址则函数形参既可以用字符数组又可以用指针变量函数的返回值可以是引用类型且函数返回引用可以作为左值函数的返回类型可以是结构体类型这时函数将返回一个结构体对象所有的函数在定义它的程序中都是可见的三预处理命令包括宏定义预处理命令行不能以分号结尾预处理命令行可以出现在程序的最后一行预处理命令行作用域是从出现位置开始到源程序文件末尾凡是以#号开头的行不一定都为编译预处理命令行在源文件的一行上不可以有多条预处理命令预处理不做语法检查C在编译前由预处理器对预处理命令进行处理故在编译前被执行编译时进行语法分析宏替换不占用程序的运行时间只占编译时间四内联函数与宏的区别内联函数在运行时可调试而宏定义不可以;编译器会对内联函数的参数类型做安全检查或自动类型转换同普通函数而宏定义则不会内联函数可以访问类的成员变量宏定义则不能在类中声明同时定义的成员函数自动转化为内联函数。五函数与宏的区别宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型.宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值传递给形参,既然说是值,自然是计算得来的.宏在编译之前进行,即先用宏体替换宏名,然后再编译的,而函数显然是编译之后,在执行时,才调用的.因此,宏占用的是编译的时间,而函数占用的是执行时的时间.宏的参数是不占内存空间的,因为只是做字符串的替换,而函数调用时的参数传递则是具体变量之间的信息传递,形参作为函数的局部变量,显然是占用内存的.函数的调用是需要付出一定的时空开销的,因为系统在调用函数时,要保留现场,然后转入被调用函数去执行,调用完,再返回主调函数,此时再恢复现场,这些操作,显然在宏中是没有的.宏替换不占用程序的运行时间宏与类型无关但是c中函数必须指定返回类型故宏可以做函数不能做的事六函数模板1.函数模板的格式如下Template class 形参名class 形参名...... 返回类型函数名(参数列表){函数体}其中class可以用typename关键字代替2.函数模板调用时不需要显式指定类型系统自动匹配参数类型若没有合适的会进行报错。而类模板使用需要显式指定类型,且对于函数模板注意要返回值和参数的类型一致3.模板函数和普通函数都符合条件时优先执行普通函数4.模板特化当函数模板需要对某些类型进行特化处理称为函数模板的特化类模板的特化同理① 因为很多时候我们既需要一个模板能应对各种情形又需要它对于某个特定的类型有着特别的处理故出现了模板特化① 特化整体上分为全特化和偏特化② 全特化:就是模板中模板参数全被指定为确定的类型。 全特化也就是定义了一个全新的类型全特化的类中的函数可以与模板类不一样③ 偏特化模板中的模板参数没有被全部确定需要编译器在编译时进行确定④ 对主版本模板类、全特化类、偏特化类的调用优先级从高到低进行排序是全特化类偏特化类主版本模板类⑤ 当函数调用发现有特化后的匹配函数时会优先调用特化的函数而不再通过函数模版来进行实例化⑥ 模板特化相当于在声明了类模板等后声明需要模板特化然后让接下来的代码自己使用一个类型故不能单独使用例![img](file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps386C.tmp.jpg)5. 模板特化实现template 完全和模板类型没有一点关系的类实现或者函数定义① 特化为绝对类型全特化:例:templateclass Compare{...}; // 特化为float类型此为函数模板特化函数模板只能全特化没有偏特化② 特化为引用指针类型(半特化、偏特化)例template struct iterator_traits_Tp* {}③ 特化为另外一个类模板偏特化例template class Comparevector{}6. 类模板的成员函数都是函数模板没使用过的成员函数即函数模板不会被实例化7. 函数模板必须由程序员实例化为可执行的函数8. 函数模板的虚拟类型名是在编译阶段确定实际类型的七函数重载使用重载函数编程序的目的是使用相同的函数名调用功能相似的函数使用方便提高可读性重载函数的形参个数或类型必须不同void x(int,char ch’a’)与void x(int)可以在同一程序中定义但不可以重载八内联函数内联置函数inline引入内联函数的目的是为了解决程序中函数调用的效率问题程序在编译器编译的时候编译器将程序中出现的内联函数的调用表达式用内联函数的函数体进行替换而对于其他的函数都是在运行时候才被替代。这其实就是个空间代价换时间的节省弊代码被多次复制增加了代码量占用更多的内存空间故在当函数代码较小并且被频繁调用的时候。在使用内联函数时要留神① 使用基类指针或引用来调用虚函数时它都不能为内联函数(因为调用发生在运行时)。但是使用类的对象(不是指针或引用)来调用时可以当做是内联因为编译器在编译时确切知道对象是哪个类的② 默认情况下在类体中定义的成员函数若不包括循环等控制结构符合内联函数要求时C会自动将它们作为内联函数处理不是所有成员函数都是内联函数③ 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方不是运行时④ 内联函数在编译时做参数类型检查⑤ 在内联函数中不允许使用循环语句for,while和switch结果带有异常接口声明的函数也不能声明为内联函数。另外递归函数(自己调用自己的函数)是不能被用来做内联函数的。内联函数只适合于只有15行的小函数⑥ 内联函数的定义必须出现在内联函数第一次调用之前⑦ 定义内联函数inline写类型前面⑧ 关键字inline 必须与函数定义体放在一起才能使函数成为内联仅将inline 放在函数声明前面不起任何作用⑨ 如果在类外定义inline函数则必须将类定义和成员函数定义放在同一头文件中否则编译时无法进行置换⑩ 头文件中不仅要包含 inline 函数的声明而且必须包含定义且在定义时必须加上 inline⑪ 不管是 class 声明中定义的 inline 函数还是 class 实现中定义的 inline 函数不存在优先不优先的问题⑫ 内置函数不需要使用堆栈进行现场的保护与恢复⑬ 用 inline 修饰的函数原型其对应的函数也将成为内联函数 - 错自己理解inline为建议型关键字⑭ 内联函数可以是静态的

相关文章:

C++中的函数知识点大全

函数的定义不能嵌套但调用可以嵌套在函数调用时,如某一默认参数要指明一个特定值,则有其之前所有参数都必须赋值赋默认实参时 一旦某个形参被赋予了默认值,它后面的所有形参都必须有默认值,因为设置默认参数的顺序是自右向左&…...

AI Agent 上线后,别只看成功率:你需要一套可观测性指标

很多团队做 AI Agent,上线前会问一个问题: “成功率多少?” 这当然要看。 但只看成功率,很容易误判。 因为 AI Agent 的问题不是简单的成功或失败。 它可能成功调用了工具,但参数是错的。 它可能生成了回复&#xff0c…...

构造函数、this指向和原型链机制

今天在刷力扣 [146. LRU 缓存](https://leetcode.cn/problems/lru-cache/) 的时候,遇到了原型链的写法,想想这个写法我正式开发中从来都没有用过,到底是个什么玩意?遂将各个节点和变量都定义在外面,但是代码居然报错啦…...

【Coze工作流】零代码做AI自动化,小白也能5分钟上手

一、问题背景:手工做重复AI任务太累,想自动化但不会写代码在日常办公或者内容创作中,很多人都有过这样的痛点:每天要重复打开各种AI工具。比如你要写一篇爆款文章,先要找AI找选题,再让AI写大纲,…...

PowerToys汉化指南:3步让英文效率工具变成你的中文助手

PowerToys汉化指南:3步让英文效率工具变成你的中文助手 【免费下载链接】PowerToys-CN PowerToys Simplified Chinese Translation 微软增强工具箱 自制汉化 项目地址: https://gitcode.com/gh_mirrors/po/PowerToys-CN 你是不是曾经因为PowerToys的英文界面…...

通过Taotoken CLI工具一键配置多开发环境接入参数

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Taotoken CLI工具一键配置多开发环境接入参数 在接入大模型服务时,开发者常常需要为不同的开发工具(如…...

我用AI一周做了个口播视频平台,现在开源了

做独立开发这两年,我一直在想一个问题:一个人到底能做到什么程度? 上周我给出了自己的答案——我用 DeepSeek 定义需求 CodeBuddy 辅助编码,一个人从零搞了一个 AI 口播视频生成平台,取名智播坊。输入文案&#xff0…...

Java类与对象:编程核心解密

好的,我们来详细解释一下Java中的类和对象这两个核心概念。1. 类 (Class)定义:类是一个模板或蓝图。它定义了某一类“事物”的共同特征(属性)和行为(方法)。作用:类描述了该种“事物”具有哪些信…...

git reset 怎么用?2026年最完整操作指南,撤销提交不再手足无措

代码提交了才发现写错了,或者本地 commit 堆了一堆想整理——你是直接新建一个"撤回"commit,还是对着搜索结果一脸茫然不敢乱动? 如果你还没搞清楚 git reset 的三种模式,随时可能把代码撤没了。学完本文,你…...

easyPoi使用

一、核心定位区别 EasyPoi:全能型,支持 Excel、Word、PDF 导出,注解极简,适合小数据、快速开发EasyExcel:高性能型,只专注 Excel,主打低内存、大数据量,适合海量数据导出 二、Easy…...

My-TODOs:跨平台桌面待办清单,解放您的生产力

My-TODOs:跨平台桌面待办清单,解放您的生产力 【免费下载链接】My-TODOs A cross-platform desktop To-Do list. 跨平台桌面待办小工具 项目地址: https://gitcode.com/gh_mirrors/my/My-TODOs 在信息过载的今天,如何高效管理日常任务…...

2026 年 AI 工具聚合站:从模型入口到开发基础设施的进化之路

在 2026 年的 AI 开发生态中,开发者正面临一个矛盾的现状:一方面是 GPT-5.5、Claude 4.7、Gemini 3.1 等大模型的能力持续突破,带来了前所未有的技术红利;另一方面,模型碎片化、接口异构化、成本高企等问题&#xff0c…...

咖啡一杯,Token 无限,Real-Time Cafe 深圳站来了!新增「硬件晒晒桌」与「AI 桌游试玩桌」

咖啡一杯,Token 无限——「Real-Time Cafe」是一个让开发者聚在一起实时 coding、实时 debug、实时互动的咖啡馆快闪计划。 Real-Time Cafe 深圳站来了!就在本周日 5 月 24 日下午。 本站特设「硬件晒晒桌」与「AI 桌游试玩桌」——带上你的电子宠物、…...

3分钟掌握R3nzSkin:英雄联盟国服免费全皮肤终极方案

3分钟掌握R3nzSkin:英雄联盟国服免费全皮肤终极方案 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 想在英雄联盟国服免费体验所有皮肤吗&a…...

3个关键技术方案:如何系统化解决Navicat Premium试用期限制

3个关键技术方案:如何系统化解决Navicat Premium试用期限制 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 本文旨…...

终极KMS激活解决方案:Windows与Office一体化智能激活工具

终极KMS激活解决方案:Windows与Office一体化智能激活工具 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO KMS_VL_ALL_AIO是一款功能强大的Windows系统和Microsoft Office套件的智能激…...

历史性突破,OpenAI模型搞定人类科学家80年未破难题,能发顶刊了

OpenAI 7个月前曾因虚假数学突破被同行嘲笑。 智东西5月21日报道,今日,OpenAI宣布,其一款未对外发布的内部通用推理模型,独立完成了一份原创数学证明。该证明推翻了匈牙利数学家保罗埃尔德什(Paul Erdős)…...

显卡驱动清理终极指南:Display Driver Uninstaller专业使用教程

显卡驱动清理终极指南:Display Driver Uninstaller专业使用教程 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uni…...

锂电 / 光伏工业相机选型:5 大品牌核心参数与适用场景解析

2026 年锂电与光伏行业工业相机选型,早已不再是单纯比拼分辨率数值。行业竞争焦点已转向高速传输下的运行稳定性、与 AI 智能检测的融合深度,以及复杂生产场景下的专属定制能力。像锂电极片高速涂布、光伏硅片隐裂筛查这类核心生产环节,对工业…...

NoFences:免费开源的Windows桌面整理终极方案,告别杂乱桌面

NoFences:免费开源的Windows桌面整理终极方案,告别杂乱桌面 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 还在为Windows桌面上杂乱无章的图标而烦恼…...

STM32F407 + RT-Thread 实战:从工程结构到多线程 LED 闪烁

一、工程简介最近看了一个基于 STM32F407 的 RT-Thread 工程,整体结构比较标准,功能上也比较适合作为入门练手项目。这个工程的核心功能并不复杂,主要是通过 RT-Thread 创建多个线程,分别控制不同的 LED 引脚按不同节奏闪烁。虽然…...

抖音批量下载完整指南:3步实现无水印视频高效获取

抖音批量下载完整指南:3步实现无水印视频高效获取 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …...

NoFences:免费开源桌面整理神器,让Windows桌面焕然一新

NoFences:免费开源桌面整理神器,让Windows桌面焕然一新 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 还在为Windows桌面上杂乱无章的图标而烦恼吗&a…...

内网规划练习

本文基于172.16.0.0/16 内网规划,实现双核心交换机互为备份,整合 VLAN、MSTP、VRRP、Eth-Trunk、DHCP 中继、NAT outbound 等技术,满足 PC 自动获取 IP、内网互通、访问公网及 ISP 环回的全业务需求。一、网络需求与规划内网地址:…...

乒乓球教程资源合集

【课程教程资料】乒乓球入门必看,全方位发球技巧教学 文件大小: 3.9GB内容特色: 慢镜拆解12种发球,旋转弧线肉眼可见适用人群: 想靠发球直接拿分的业余玩家核心价值: 一周练成对手接不住的“魔鬼发”下载链接: https://pan.quark.cn/s/8d67c2d65358 乒…...

安全自动化工具:自动化安全检测和响应

安全自动化工具:自动化安全检测和响应 一、安全自动化工具概述 1.1 安全自动化工具的定义 安全自动化工具是指用于自动化执行安全检测、响应和管理任务的软件工具。它通过自动化脚本和智能算法,提高安全运营效率,降低人为错误风险。 1.2 安全…...

如何用Python快速接入Taotoken并调用多模型API完成数据清洗任务

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 如何用Python快速接入Taotoken并调用多模型API完成数据清洗任务 对于需要处理客户数据的开发者而言,数据清洗与结构化是…...

安装 KubeSphere

安装 KubeSphere KubeSphere Core (ks-core) 是 KubeSphere 的核心组件,为扩展组件提供基础的运行环境。KubeSphere Core 安装完成后,即可访问 KubeSphere Web 控制台。 1. 安装 KubeSphere Core 在集群节点上,执行以下命令安装 KubeSpher…...

可观测性告警:及时发现和响应系统异常

可观测性告警:及时发现和响应系统异常 一、可观测性告警概述 1.1 可观测性告警的定义 可观测性告警是指基于系统的指标、日志和追踪数据,通过预设的规则和阈值,自动检测系统异常并发送通知的机制。它帮助运维人员及时发现问题,快速…...

期刊论文重复率多少才算合格?

没有一个“全国统一合格线”。很多人想要一个标准答案,比如“10%以下就稳”“15%以下就能投”。现实是:看你投什么期刊、什么学科、什么系统。大致可以这么看:1. 普通国内期刊:通常 10%–30% 区间常见 有些普刊要求比较宽&#xf…...