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

C函数基础

C语言中的函数教程

在C语言中,函数是一段组织好的、可重复使用的、用于执行特定任务的代码。函数可以提高代码的模块化和可重用性。以下是关于C语言中函数的详细教程。

1. 函数的定义与声明

1.1 函数定义

函数定义包括函数头和函数体。函数头包括函数返回类型、函数名和参数列表。

返回类型 函数名(参数类型 参数名1, 参数类型 参数名2, ...) {// 函数体// 执行的操作// 返回值(如果有的话)
}

1.2 函数声明

函数在使用之前必须声明。声明告诉编译器函数的名称、返回类型和参数类型。如果函数定义在调用之前,则不需要单独的声明。

返回类型 函数名(参数类型 参数名1, 参数类型 参数名2, ...);

1.3 示例

#include <stdio.h>
// 函数声明
int add(int a, int b);
int main() {int result = add(5, 3); // 函数调用printf("The result is: %d\n", result);return 0;
}
// 函数定义
int add(int a, int b) {return a + b; // 返回两个整数的和
}

2. 函数参数

函数参数有两种类型:实际参数(实参)和形式参数(形参)。实参是在函数调用时传递给函数的值,形参是在函数定义中声明的变量。

2.1 传值调用

在C语言中,默认情况下,参数是通过值传递的。这意味着函数内部对形参的修改不会影响实参。

void modifyValue(int x) {x = 100; // 这不会影响main函数中的变量
}
int main() {int y = 10;modifyValue(y);printf("The value of y is: %d\n", y); // 输出仍为10return 0;
}

2.2 传址调用

通过传递变量的地址,可以在函数内部修改外部变量的值。

void modifyValue(int *x) {*x = 100; // 通过指针修改外部变量的值
}
int main() {int y = 10;modifyValue(&y); // 传递y的地址printf("The value of y is: %d\n", y); // 输出为100return 0;
}

3. 函数返回值

函数可以通过return语句返回一个值。返回类型必须与函数定义中的返回类型相匹配。

3.1 示例

#include <stdio.h>
int multiply(int a, int b) {return a * b; // 返回两个整数的乘积
}
int main() {int result = multiply(4, 3);printf("The result is: %d\n", result);return 0;
}

4. 递归函数

递归函数是调用自身的函数。递归可以解决许多数学问题,如计算阶乘、斐波那契数列等。

4.1 示例

#include <stdio.h>
int factorial(int n) {if (n == 0) {return 1; // 递归的基本情况} else {return n * factorial(n - 1); // 递归调用}
}
int main() {int fact = factorial(5);printf("The factorial of 5 is: %d\n", fact);return 0;
}

5. 总结

函数是C语言编程中不可或缺的组成部分,它们帮助我们将复杂的程序分解成更小、更易于管理的部分。掌握函数的使用对于编写高效和结构化的C语言代码至关重要。在编写函数时,需要注意以下几点:

  • 函数应该具有单一职责。
  • 函数名应该能够反映其功能。
  • 在函数定义之前声明函数可以提高代码的可读性。
  • 避免在函数中使用全局变量,尽量使用局部变量。

相关文章:

C函数基础

C语言中的函数教程 在C语言中&#xff0c;函数是一段组织好的、可重复使用的、用于执行特定任务的代码。函数可以提高代码的模块化和可重用性。以下是关于C语言中函数的详细教程。 1. 函数的定义与声明 1.1 函数定义 函数定义包括函数头和函数体。函数头包括函数返回类型、…...

html和css实现页面

任务4 html文件 任务5 htm文件 css文件 任务6 html文件 css文件 任务7 html文件 css文件...

Github_以太网开源项目verilog-ethernet代码阅读与移植(八)——移植工程分享

实验背景 第六篇计划是写项目中各个模块的实现和约束文件的编写&#xff0c;有的小伙伴有裁剪工程的需要&#xff0c;就先分享一个半成品以供参考&#xff0c;由于笔者水平有限&#xff0c;错误肯定会有&#xff0c;望批评指正。 实验内容 移植工程共享 实验步骤 工程一部…...

【大模型实战篇】大模型分词算法BPE(Byte-Pair Encoding tokenization)及代码示例

词元化是针对自然语言处理任务的数据预处理中一个重要步骤&#xff0c;目的是将原始文本切分成模型可以识别和处理的词元序列。在大模型训练任务中&#xff0c;就是作为大模型的输入。传统的自然语言处理方法&#xff0c;如基于条件随机场的序列标注&#xff0c;主要采用基于词…...

低功耗4G模组LCD应用示例超全教程!不会的小伙伴看这篇就够了!

希望大家通过本文的介绍&#xff0c;学会LCD显示屏与Air780E开发板结合使用的方法。利用LCD显示屏&#xff0c;你可以为你的项目增加丰富的显示内容&#xff0c;提升用户体验。记住&#xff0c;实践出真知&#xff0c;赶快动手尝试吧&#xff01;相信这篇教程对你有所帮助~ 本文…...

Java while语句练习 C语言的函数递归

1. /* public static void main(String[] args) {int[] arr {25, 24, 12, 98, 36, 45};int max arr[0];//不能写0for (int i 1; i < arr.length; i) {if (arr[i] > max) {max arr[i];}}System.out.println(max);}*//*public static void main(String[] args) {doubl…...

illustrator免费插件 截图识别文字插件 textOCR

随手可得的截图识别文字插件 textOCR&#xff0c;识别出来的文字可直接输入到illustrator的当前文档中&#xff1a; 执行条件 1、需截图软件支持&#xff0c;推荐笔记截图工具 2、截好图片直接拖入面板即可完成识别 ****后期可完成实现在illustrator选择图片对象完成文字识别。…...

提升数据管理效率:ETLCloud与达梦数据库的完美集成

达梦数据库的核心优势在于其强大的数据处理能力和高可用性设计。它采用先进的并行处理技术&#xff0c;支持大规模的数据操作&#xff0c;同时具备出色的事务处理能力和数据安全保障。此外&#xff0c;达梦数据库还提供了丰富的功能模块&#xff0c;如数据备份、恢复、监控等&a…...

头歌——人工智能(搜索策略)

文章目录 第1关&#xff1a;搜索策略第2关&#xff1a;盲目搜索第3关&#xff1a;启发式搜索 - 扫地机器人最短路径搜索第4关&#xff1a;搜索算法应用 - 四皇后问题 第1关&#xff1a;搜索策略 什么是搜索技术 人类的思维过程可以看作是一个搜索过程。从小学到现在&#xff0…...

gorm.io/sharding改造:赋能单表,灵活支持多分表策略(下)

背景 分表组件改造的背景&#xff0c;我在这篇文章《gorm.io/sharding改造&#xff1a;赋能单表&#xff0c;灵活支持多分表策略&#xff08;上&#xff09;》中已经做了详细的介绍——这个组件不支持单表多个分表策略&#xff0c;为了突破这个限制做的改造。 在上一篇文章中&…...

域渗透AD渗透攻击利用 MS14-068漏洞利用过程 以及域渗透中票据是什么 如何利用

目录 wmi协议远程执行 ptt票据传递使用 命令传递方式 明文口令传递 hash口令传递 票据分类 kerberos认证的简述流程 PTT攻击的过程 MS14-068 漏洞 执行过程 wmi协议远程执行 wmi服务是比smb服务高级一些的&#xff0c;在日志中是找不到痕迹的&#xff0c;但是这个主…...

C++进阶-->继承(inheritance)

1. 继承的概念及定义 1.1 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要手段&#xff0c;他允许我们在保证原有类的特性基础上还进行扩展&#xff0c;通过继承产生的类叫做派生类&#xff08;子类&#xff09;&#xff0c;被继承的类叫做基类&a…...

可视化项目 gis 资源复用思路(cesium)

文章目录 可视化项目 gis 资源复用思路底图、模型替换思路具体操作 可视化项目 gis 资源复用思路 背景&#xff1a; A项目的底图、模型 是现在在做的 B项目所需要的&#xff0c;现在要把 B项目的底图之类的替换成 A系统的 底图、模型替换思路 观察可访问系统的 gis 相关网络请…...

SQL实战测试

SQL实战测试 &#xff08;请写下 SQL 查询语句&#xff0c;不需要展示结果&#xff09; 表 a DateSalesCustomerRevenue2019/1/1张三A102019/1/5张三A18 1. **用一条 ** SQL 语句写出每个月&#xff0c;每个销售有多少个客户收入多少 输出结果表头为“月”&#xff0c;“销…...

Java 基础教学:基础语法-变量与常量

变量 变量是程序设计中的基本概念&#xff0c;它用于存储信息&#xff0c;这些信息可以在程序执行过程中被读取和修改。 变量的声明 在Java中&#xff0c;声明变量需要指定变量的数据类型以及变量的名称。数据类型定义了变量可以存储的数据种类&#xff08;例如整数、浮点数…...

vue3使用element-plus手动更改url后is-active和菜单的focus颜色不同步问题

在实习&#xff0c;给了个需求做个新的ui界面&#xff0c;遇到了一个非常烦人的问题 如下&#xff0c;手动修改url时&#xff0c;is-active和focus颜色不同步 虽然可以直接让el-menu-item:focus为白色能解决这个问题&#xff0c;但是我就是想要有颜色哈哈哈&#xff0c;有些执…...

每天五分钟深度学习框架pytorch:从底层实现一元线性回归模型

本文重点 本节课程我们继续搭建一元线性回归模型,不同的是这里我们不使用pytorch框架已经封装好的一些东西,我们做这个目的是为了更加清楚的看到pytorch搭建模型的本质,为了更好的理解,当然实际中我们还是使用pytorch封装好的一些东西,不要重复造轮子。 模型搭建 #定义…...

编辑器加载与AB包加载组合

解释&#xff1a; 这个 ABResMgr 类是一个资源加载管理器&#xff0c;它用于整合 AB包&#xff08;Asset Bundle&#xff09;资源加载和 编辑器模式资源加载。通过这个管理器&#xff0c;可以根据开发环境选择资源加载方式&#xff0c;既支持 运行时使用Asset Bundle加载&…...

【c++】vector中的back()函数

nums.back() 是 C 中 std::vector 类的一个成员函数&#xff0c;用于获取数组&#xff08;向量&#xff09;中的最后一个元素。以下是一些关于 nums.back() 的详细解释和示例使用&#xff1a; 1. 功能 nums.back() 返回数组 nums 中的最后一个元素。如果数组为空&#xff0c;…...

[分享] SQL在线编辑工具(好用)

在线SQL编写工具&#xff08;无广告&#xff09; - 在线SQL编写工具 - Web SQL - SQL在线编辑格式化 - WGCLOUD...

当心“Pin-to-Pin兼容“陷阱:ICM-42688国产替代芯片深度拆解与避坑指南

两句话总结&#xff1a;近期TDK ICM-42688-P价格暴涨至百元且一芯难求&#xff0c;立创商城上出现了华轩阳、Tokmas等"国产替代"。本文通过详细对比三家datasheet数据手册&#xff0c;揭示所谓"兼容"背后的软件陷阱与性能差异。结论可能出乎你意料&#xf…...

GSMA:运营商实践AI大模型赋能垂直行业标杆案例集 2025

这份《运营商实践 AI 大模型赋能垂直行业标杆案例集 2025》由 GSMA 发布&#xff0c;聚焦客户服务与运营创新、医疗健康与智慧教育、产业升级与智能制造、公共服务与社会治理四大领域&#xff0c;系统梳理了中国移动、中国电信、中国联通三大运营商携手生态伙伴&#xff0c;将 …...

从GitHub开源项目到一键部署:OFA模型在星图平台的快速落地

从GitHub开源项目到一键部署&#xff1a;OFA模型在星图平台的快速落地 1. 引言 你是不是也遇到过这种情况&#xff1f;在GitHub上看到一个特别酷的AI项目&#xff0c;比如OFA这种能看图说话、理解多模态信息的模型&#xff0c;心里痒痒的想立刻上手试试。结果呢&#xff0c;光…...

气象数据可视化必看:ERA5降水资料从m转mm的3种场景解决方案

气象数据可视化实战&#xff1a;ERA5降水资料单位换算与场景化应用指南 当你在深夜的实验室里盯着屏幕上那一串以"m"为单位的降水数据时&#xff0c;是否曾困惑过如何将它们转化为更符合学术惯例的"mm"&#xff1f;作为处理过数百个气象数据集的老手&#…...

Qwen2.5-7B-Instruct效果展示:农业病虫害图像描述→防治方案生成

Qwen2.5-7B-Instruct效果展示&#xff1a;农业病虫害图像描述→防治方案生成 想象一下&#xff0c;一位农民在田间地头&#xff0c;用手机拍下一片叶子上的异常斑点。几分钟后&#xff0c;他不仅得到了这是什么病害的准确诊断&#xff0c;还收到了一份详细的、可操作的防治方案…...

PX4飞控系统深度解析:从模块化架构到自主飞行核心技术揭秘

PX4飞控系统深度解析&#xff1a;从模块化架构到自主飞行核心技术揭秘 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 你是否曾好奇&#xff0c;一个开源飞控系统如何支撑从微型无人机到工业级无人…...

LFM2.5-1.2B-Thinking-GGUF代码生成能力评测:对比Claude Code的轻量化替代方案

LFM2.5-1.2B-Thinking-GGUF代码生成能力评测&#xff1a;对比Claude Code的轻量化替代方案 1. 评测背景与模型特点 在当今AI辅助编程领域&#xff0c;大型语言模型已经成为开发者日常工作的得力助手。然而&#xff0c;许多高性能模型往往需要云端部署或强大的计算资源&#x…...

GraphRAG实战指南:12种技术对比,教你如何选择最适合的图结构RAG方案

GraphRAG技术选型实战&#xff1a;12种方案深度解析与场景适配指南 当传统RAG在简单问答场景中表现尚可时&#xff0c;面对需要多跳推理、深度上下文关联的复杂任务&#xff0c;GraphRAG正展现出独特优势。本文将从工程实践角度&#xff0c;拆解12种主流GraphRAG技术的核心差异…...

Windows下FFmpeg环境配置全攻略:从下载到视频剪辑实战

Windows下FFmpeg环境配置全攻略&#xff1a;从下载到视频剪辑实战 在数字内容创作爆发的时代&#xff0c;视频处理能力已成为开发者和创作者的必备技能。FFmpeg作为开源多媒体处理领域的"瑞士军刀"&#xff0c;其强大功能与跨平台特性使其成为处理音视频文件的首选工…...

PyTorch 2.8镜像效果展示:使用OpenCV对VideoLDM输出做运动模糊增强处理

PyTorch 2.8镜像效果展示&#xff1a;使用OpenCV对VideoLDM输出做运动模糊增强处理 1. 效果展示概览 在视频生成领域&#xff0c;运动模糊效果是提升视频真实感的关键因素之一。本文将展示如何利用PyTorch 2.8镜像环境&#xff0c;结合OpenCV对VideoLDM生成的原始视频进行运动…...