跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
C 语言函数定义
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= C语言函数定义 = '''函数定义'''是C语言中构建程序逻辑的核心组成部分,它描述了函数的具体实现方式,包括函数名称、参数列表、返回类型以及函数体(执行代码)。通过函数定义,开发者可以将复杂任务分解为可重用的模块化单元。 == 基本语法结构 == C语言函数定义的标准格式如下: <syntaxhighlight lang="c"> 返回类型 函数名(参数列表) { // 函数体 语句序列; return 返回值; // 非void类型必须包含 } </syntaxhighlight> === 组成部分详解 === * '''返回类型''':指定函数返回值的[[数据类型]](如<code>int</code>, <code>float</code>, <code>void</code>等) * '''函数名''':遵循标识符命名规则,需明确表达函数功能 * '''参数列表''':声明输入参数的[[数据类型]]和名称,多个参数用逗号分隔 * '''函数体''':包含具体执行逻辑的代码块 * '''return语句''':终止函数执行并返回一个值(<code>void</code>函数可省略) == 代码示例 == === 基础示例 === 计算两个整数之和的函数定义: <syntaxhighlight lang="c"> int add(int a, int b) { int sum = a + b; return sum; } </syntaxhighlight> '''调用方式''': <syntaxhighlight lang="c"> int result = add(3, 5); // 返回8 </syntaxhighlight> === 无返回值示例 === 打印问候语的void函数: <syntaxhighlight lang="c"> void greet(char name[]) { printf("Hello, %s!\n", name); } </syntaxhighlight> == 参数传递机制 == C语言支持三种参数传递方式: <mermaid> graph LR A[参数传递] --> B[值传递] A --> C[指针传递] A --> D[数组传递] </mermaid> === 值传递示例 === 参数副本被传入函数,原变量不受影响: <syntaxhighlight lang="c"> void modify(int x) { x = x * 2; } int main() { int num = 5; modify(num); printf("%d", num); // 仍输出5 return 0; } </syntaxhighlight> === 指针传递示例 === 通过地址修改原变量: <syntaxhighlight lang="c"> void realModify(int *x) { *x = *x * 2; } int main() { int num = 5; realModify(&num); printf("%d", num); // 输出10 return 0; } </syntaxhighlight> == 函数原型 == 在C语言中,函数使用前需要声明。完整定义可作为声明,也可使用单独的原型声明: <syntaxhighlight lang="c"> // 原型声明 double calculateCircleArea(double radius); int main() { double area = calculateCircleArea(2.5); // ... } // 后续定义 double calculateCircleArea(double radius) { return 3.14159 * radius * radius; } </syntaxhighlight> == 递归函数 == 函数调用自身的特殊形式,需包含终止条件: <syntaxhighlight lang="c"> int factorial(int n) { if (n <= 1) // 终止条件 return 1; else return n * factorial(n-1); // 递归调用 } </syntaxhighlight> '''调用示例''': <syntaxhighlight lang="c"> printf("%d", factorial(5)); // 输出120 </syntaxhighlight> == 实际应用案例 == === 温度转换程序 === 将华氏度转换为摄氏度的实用函数: <syntaxhighlight lang="c"> float fahrenheitToCelsius(float fahr) { return (5.0/9.0) * (fahr - 32.0); } int main() { float tempF = 98.6; printf("正常体温: %.1f°F = %.1f°C\n", tempF, fahrenheitToCelsius(tempF)); return 0; } </syntaxhighlight> '''输出''': <pre> 正常体温: 98.6°F = 37.0°C </pre> == 数学函数示例 == 使用标准数学库实现二次方程求解: <syntaxhighlight lang="c"> #include <math.h> void solveQuadratic(double a, double b, double c) { double discriminant = b*b - 4*a*c; if (discriminant >= 0) { double root1 = (-b + sqrt(discriminant)) / (2*a); double root2 = (-b - sqrt(discriminant)) / (2*a); printf("根: %.2f 和 %.2f\n", root1, root2); } else { printf("无实数解\n"); } } </syntaxhighlight> == 最佳实践 == 1. 保持函数功能单一(单一职责原则) 2. 函数长度建议不超过一屏(约50行) 3. 使用有意义的命名(动词+名词形式) 4. 限制参数数量(通常不超过5个) 5. 为复杂函数添加注释说明 == 常见错误 == * 忘记返回非void函数的值 * 参数类型不匹配 * 递归函数缺少终止条件 * 修改按值传递的参数期望影响原变量 == 进阶概念 == 对于高级开发者,可进一步研究: * 函数指针:<code>int (*funcPtr)(int, int)</code> * 可变参数函数:<code>printf()</code>的实现原理 * 内联函数:<code>inline</code>关键字优化 * 静态函数:<code>static</code>限制作用域 通过系统掌握函数定义,开发者可以构建出结构清晰、易于维护的C语言程序。建议通过实际编码练习来巩固这些概念,从简单函数开始逐步构建复杂系统。 [[Category:编程语言]] [[Category:C]] [[Category:C 语言函数]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)