文章目录
前言
一、函数是什么,有什么用?
二、函数基本语法
三、函数的声明与定义
四、参数的传递
五、四类函数(按有无参数/返回值)
六、总结
前言
函数是C程序的基本组成单元,也是模块化编程的核心。本文从“是什么、为什么用、怎么写”三个维度,系统讲解C语言函数的定义、声明、参数传递、核心知识点,配合可运行代码与避坑指南,适合零基础入门和复习巩固。
一、函数是什么,有什么用?
- 函数是什么:函数(Function) 是一段完成特定功能的、可重复调用的代码块。在C语言中,函数由函数名、参数列表、返回类型、函数体组成。程序从main 函数开始执行,通过调用其他函数完成具体任务。
(1)类比:函数就像工厂里的一台机器——你放入原材料(参数),机器加工后产出产品(返回值)。
2.函数有什么用:函数是将一段实现特定功能的代码封装起来,给它起一个名字。程序可以通过函数名反复调用这段代码,从而实现代码的重复使用,提高程序的可读性和可维护性。
(1)没有函数的话,你每想算一次加法,都得重新写一遍加法的步骤。有了函数,写一次,以后随时"喊"它来干活。
(2)有了函数后可以将重复的逻辑进行打包,起个变量名字,想用时就喊他。这样可以减少大量重复逻辑的代码,改公式时只需要修改函数一处,逻辑清晰易懂。
二、函数基本语法
1 .通用格式
代码如下(示例):
返回类型 函数名(参数列表){// 函数体return返回值;// 若返回类型不是 void,一般要有 return2.完整示例
代码如下(示例):
#include<stdio.h>intadd(inta,intb){intsum=a+b;returnsum;}intmain(void){intresult=add(3,5);printf("3 + 5 = %d\n",result);return0;}3.无返回值函数
代码如下(示例):
voidprint_hello(void){printf("Hello, C Functions!\n");}三、函数声明与定义
1.定义(Definition)
包含函数体的完整实现:
intmul(inta,intb){returna*b;}2. 声明/原型(Declaration / Prototype)
告诉编译器“有这个函数、长什么样”,不包含函数体:
intmul(inta,intb);/* 函数声明 */3. 声明与定义的配合
#include<stdio.h>intmul(inta,intb);/* 函数声明 */intmain(void){printf("4 * 5 = %d\n",mul(4,5));return0;}intmul(inta,intb)/* 函数定义 */{returna*b;}规则:如果函数在 main 之后定义,必须在调用前声明,否则编译器会报错。
四、参数的传递
1 值传递(默认方式)
C语言所有参数传递都是值拷贝——把实参的值复制一份给形参,函数内修改形参不影响外部:
voidincrement(intx){x=x+1;printf("函数内 x = %d\n",x);}intmain(void){inta=5;increment(a);printf("函数外 a = %d\n",a);/* 仍是5 */return0;}输出:
函数内 x = 6
函数外 a = 5
2 指针传递(模拟“引用传递”)
要修改外部变量,必须传地址:
voidincrement(int*x){*x=*x+1;printf("函数内 *x = %d\n",*x);}intmain(void){inta=5;increment(&a);printf("函数外 a = %d\n",a);/* 变成6 */return0;}3 经典案例:交换两个数
voidswap(int*p,int*q){inttmp=*p;*p=*q;*q=tmp;}intmain(void){intx=10,y=20;printf("交换前: x=%d, y=%d\n",x,y);swap(&x,&y);printf("交换后: x=%d, y=%d\n",x,y);return0;}五、四类函数(按有无参数/返回值)
1. 无参无返回
语法示例:void log_start(void)
说明:只执行操作,不接收参数也不返回结果
代码示例:
voidlog_start(void){printf("=== 程序启动 ===\n");}2. 有参无返回
语法示例:void print_sum(int a, int b)
说明:接收参数进行处理,无返回值
代码示例:
voidprint_sum(inta,intb){printf("%d + %d = %d\n",a,b,a+b);}3. 无参有返回
语法示例:int get_default(void)
说明:不接收参数,但返回处理结果
代码示例:
intget_default(void){return100;}4. 有参有返回
语法示例:int max(int a, int b)
说明:最常用形式,接收参数并返回结果
代码示例:
intmax(inta,intb){returna>b?a:b;}六、 总结
总结:C语言函数是模块化编程的基石。了解定义/声明、值传递,就能初步了解C语言函数的核心,为接下来更复杂的函数进行铺垫。多写多练,从模仿到独立设计,逐步建立编程思维。