函数定义与函数原型
在C/C等编程语言中函数原型Function Prototype和函数定义Function Definition是两个密切相关但职责完全不同的概念。以下是它们的具体关系和区别1. 核心区别函数原型声明只告诉编译器“这个函数长什么样”。它包含函数的返回类型、函数名、参数的类型和个数但不包含函数的具体执行代码且以分号;结尾。函数定义不仅包含原型中的所有信息还包含了具体的函数体执行逻辑。它是真正分配内存并实现功能的地方。2. 它们之间的关系包含关系函数定义在语法上包含了函数原型。函数定义的第一行函数头本身就是一个数原型。契约关系原型是编译器与程序员之间的契约。编译器在编译代码时遇到函数调用会去查阅原型确认你传入的参数类型和数量是否正确。如果定义与原型不匹配编译器就会报错。唯一性在一个程序中函数原型可以有多个你可以在多个地方声明同一个函数但函数定义只能有一个One Definition Rule, ODR。3. 直观的代码示例// 1. 函数原型声明告诉编译器有这样一个函数参数是int返回int int add(int a, int b); int main() { // 编译器看到原型知道 add 是合法的允许调用 int result add(3, 5); return 0; } // 2. 函数定义真正实现这个函数包含了具体的计算逻辑 int add(int a, int b) { return a b; }4. 为什么要区分它们为什么要用原型既然定义里已经包含了原型的信息为什么还要单独写一个原型呢主要是为了解决代码组织和编译效率的问题解决“先调用后定义”的问题C/C编译器是自上而下逐行扫描的。如果没有原型你在main函数里调用一个写在main下面的函数编译器就会报错说“找不到该函数”。有了原型就可以把声明放在前面定义放在后面。支持多文件编程在实际的大型项目中我们通常把原型放在头文件.h中把定义放在源文件.cpp中。这样其他文件只要#include了头文件就能直接使用这个函数而不需要知道它内部是怎么实现的实现了封装。提高编译速度当修改了函数的内部实现定义时只要原型没变依赖该函数的其他文件就不需要重新编译。

相关新闻

python 基于Python+Django电商网站

python 基于Python+Django电商网站

一、关键词电商网站、网上商城、商品购物、购物车管理、订单管理二、作品包含源码数据库万字设计文档PPT全套环境和工具资源本地部署教程三、项目技术前端技术: Html、Css、Js、Vue3.2、Element-Plus后端技术:Python、Django四、运行环境(以下…

2026/8/4 23:25:29 阅读更多 →
【AI安全零信任架构实战手册】:从数据飞地到推理沙箱,9类高危场景的12个可立即启用的检测规则

【AI安全零信任架构实战手册】:从数据飞地到推理沙箱,9类高危场景的12个可立即启用的检测规则

更多请点击: https://kaifayun.com 第一章:AI安全零信任架构的核心范式演进 传统边界防御模型在AI系统中正迅速失效——大语言模型API暴露面广、微服务间动态调用频繁、模型权重与训练数据跨域流动,使得“默认信任内网”的假设彻底崩塌。零信…

2026/8/4 23:24:29 阅读更多 →
从源码到部署:aws-cognito-angular-quickstart开发全流程详解

从源码到部署:aws-cognito-angular-quickstart开发全流程详解

从源码到部署:aws-cognito-angular-quickstart开发全流程详解 【免费下载链接】aws-cognito-angular-quickstart amazon-archives/aws-cognito-angular-quickstart: 这是一个Amazon Cognito与Angular结合的快速入门项目,适合开发者快速了解如何在Angular…

2026/8/4 23:24:29 阅读更多 →

最新新闻

DeepSeek-V4-Pro API实战:与Claude、Kimi等大模型对比测试指南

DeepSeek-V4-Pro API实战:与Claude、Kimi等大模型对比测试指南

这次我们来看一个近期在开发者社区引发高度关注的技术事件:DeepSeek-V4-Pro 正式版的发布,以及它与其他顶级大模型如 Claude Fable5、5.6Sol 和 Kimi K3 的初步对比。对于关心大模型前沿动态、特别是关注模型推理能力、代码生成和综合性能的开发者来说&a…

2026/8/6 8:23:56 阅读更多 →
全周期资质服务,诊断到维护

全周期资质服务,诊断到维护

😎宝子们,今天来给大家聊聊企业全周期资质服务。对于企业来说,资质可是相当重要的,它关乎着企业的发展和竞争力。而全周期资质服务,就是从诊断到维护的一条龙服务,让企业省心省力。🌟选购要点&a…

2026/8/6 8:23:56 阅读更多 →
抖音聊天记录如何作为法律证据?秒档导出助手取证实战教程(附证据材料清单)

抖音聊天记录如何作为法律证据?秒档导出助手取证实战教程(附证据材料清单)

一、取证的困境:抖音上的证据怎么固定? 先讲一个真实的场景。 陈律师最近代理了一起案件:当事人通过抖音和诈骗分子联系,转账数万元,全部沟通都在抖音私聊里完成。要固定证据时,陈律师面临一系列难题&#…

2026/8/6 8:23:56 阅读更多 →
Godot游戏资源解包实战:从.pck文件原理到godot-unpacker工具使用

Godot游戏资源解包实战:从.pck文件原理到godot-unpacker工具使用

1. 项目概述:为什么我们需要一个Godot解包工具?如果你正在用Godot引擎开发游戏,或者对某个用Godot制作的独立游戏内部资源感到好奇,那你大概率会遇到.pck文件。这个文件是Godot用来打包游戏资源(场景、脚本、纹理、音频…

2026/8/6 8:23:56 阅读更多 →
百万缺口迫在眉睫:养老护理员短缺成高质量养老服务最大瓶颈

百万缺口迫在眉睫:养老护理员短缺成高质量养老服务最大瓶颈

导语:全国养老护理员缺口达百万级,供需失衡已危及基本照护保障据中国老龄协会及多份行业研究报告综合估算,截至2024年中,全国养老护理员缺口超过100万人。同期,我国65岁及以上人口达2.97亿,失能、失智老年人…

2026/8/6 8:23:56 阅读更多 →
117、Zephyr RTOS网络协议栈基础:MQTT客户端

117、Zephyr RTOS网络协议栈基础:MQTT客户端

Zephyr RTOS网络协议栈基础:MQTT客户端 上周调试产线上的一个温湿度采集节点,MQTT客户端连上Broker后,每隔十几秒就断线重连一次。抓包看了半天,发现是KeepAlive报文发送时机出了问题——Zephyr的MQTT库默认心跳间隔是60秒,而我设置的Publish频率是30秒,结果Broker以为客…

2026/8/6 8:22:56 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →