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

【C语言】函数篇

目录

  • 函数的定义
    • 函数定义的语法
    • 代码示例
  • 函数的声明
    • 函数声明的语法
    • 代码示例
  • 函数的调用
    • 函数调用的语法
    • 代码示例
  • 函数的参数
    • 形式参数
    • 实际参数
    • 参数传递方式
      • 值传递
      • 地址传递
  • 函数的返回值
    • 返回值类型
    • 返回值的使用
  • 递归函数
    • 递归函数的组成
    • 示例:计算阶乘
  • 函数的作用域
    • 全局函数
    • 静态函数
  • 内联函数
    • 内联函数的定义
  • 函数指针
    • 函数指针的定义
    • 代码示例
  • 可变参数函数
    • 示例:计算多个整数的和
  • 补充内容
    • C 语言不支持默认参数
    • 数组作为函数参数
    • main 函数的命令行参数
    • 函数原型与头文件
    • 函数指针的应用(回调函数)
    • 可变参数的注意事项
    • 递归与迭代的选择
    • 内联函数的注意事项
    • 函数的副作用
    • 函数的链接属性
    • 总结

函数的定义

函数是完成特定任务的独立代码块,有助于代码的模块化和复用。

函数定义的语法

返回值类型 函数名(参数列表) {
   
    函数体;
    return 返回值; // 如果返回值类型为 void,则不需要 return 语句,或者使用 return;
}
  • 返回值类型:指定函数返回的数据类型,如 int、float、char 等。如果函数不返回任何值,使用 void 类型。
  • 函数名:是函数的标识符,遵循标识符命名规则。
  • 参数列表:是函数接收的输入参数,多个参数用逗号分隔。每个参数由数据类型和参数名组成。如果函数不接收参数,可以使用 void 或空括号。
  • 函数体:包含实现函数功能的代码。
  • return 语句:用于返回函数的结果。如果返回值类型为 void,可以省略 return 语句,或者使用 return; 来提前结束函数。

代码示例

// 定义一个函数,用于计算两个整数的和
int add(int a, int b) {
   
    int result = a + b;
    return result;
}

函数的声明

函数声明用于告诉编译器函数的名称、返回值类型和参数列表,以便在调用函数之前进行类型检查。

函数声明的语法

返回值类型 函数名(参数列表);

代码示例

// 函数声明
int add(int a, int b);

int main() {
   
    int sum = add(3, 5);
    return 0;
}

// 函数定义
int add(int a, int b) {
   
    return a + b;
}

函数的调用

调用函数就是执行函数体中的代码,并可以传递参数和接收返回值。

函数调用的语法

函数名(参数列表);

代码示例

#include <stdio.h>

// 函数定义
int add(int a, int b) {
   
    return a + b;
}

int main() {
   
    int num1 = 3, num2 = 5;
    // 函数调用
    int sum = add(num1, num2);
    printf("The sum is: %d\n", sum);
    return 0;
}

函数的参数

函数的参数分为形式参数和实际参数。

形式参数

形式参数是函数定义中声明的参数,用于接收调用函数时传递的值。

// 形式参数 a 和 b
int add(int a, int b) {
   
    return a + b;
}

实际参数

实际参数是函数调用时传递给函数的值。

int main() {
   
    int num1 = 3, num2 = 5;
    // 实际参数 num1 和 num2
    int sum = add(num1, num2);
    return 0;
}

参数传递方式

值传递

将实际参数的值复制给形式参数,函数内部对形式参数的修改不会影响实际参数。

#include <stdio.h>

void swap(int a, int b) {
   
    int temp = a;
    a = b;
    b = temp;
}

int main() {
   
    int x = 3, y = 5;
    swap(x
http://www.dtcms.com/a/54102.html

相关文章:

  • 安装remixd,在VScode创建hardhat
  • 软考架构师笔记-数据库系统
  • 确认机制的分类及其区别与联系探讨
  • 在springboot项目中引入log4j 2.x
  • mysql进阶(三)
  • 【CSS 】Class Variance Authority CSS 类名管理工具库
  • JVM与性能调优详解
  • 香港电讯CE2.0网络全面升级,100G服务支援企业关键应用
  • Unity InputField + ScrollRect实现微信聊天输入框功能
  • unity学习64,第3个小游戏:一个2D跑酷游戏
  • 如何用更少的内存训练你的PyTorch模型?深度学习GPU内存优化策略总结
  • Linux 上离线安装 python3
  • 哪些培训课程适合学习PostgreSQL中级认证知识?
  • 前端Vue3面试题
  • blender 坐标系 金属度
  • 基于多目标向日葵优化算法(Multi-objective Sunflower Optimization,MOSFO)的移动机器人路径规划研究,MATLAB代码
  • 小程序路径复制
  • 18年老牌软件,完美解锁pro!
  • Java 导出大数据到 Excel 表格
  • DeepSeek group-limited expert routing和负载均衡
  • Secret Cow Code S
  • PS内发光、外发光
  • 关于读写锁:有个线程在读,能写吗?有个线程在写,能读吗?
  • python 同一行显示多条语句
  • 探秘Transformer系列之(9)--- 位置编码分类
  • Java 大视界 -- 基于 Java 的大数据分布式任务调度系统设计与实现(117)
  • Hexo常用指令大全
  • 递归—基础算法
  • 【Java数据结构】前K个高频单词
  • Linux - 网络基础(应用层,传输层)