1. 如果函数没有声明, 应该在调用前定义:
#include <stdio.h> /* 定义求大值函数 */ int MAX(int x, int y) { if (x > y) return x; else return y; } /* 定义求小值函数 */ int MIN(int x, int y) { return x < y ? x : y; } int main(void) { int a = 5; int b = 6; /* 调用函数 */ printf("%d\n", MAX(a,b)); printf("%d\n", MIN(a,b)); getchar(); return 0; }
2. 可以在函数头声明:
#include <stdio.h> int main(void) { int a = 5; int b = 6; /* 在函数头声明要使用的函数 */ int MAX(int x, int y); int MIN(int x, int y); /* 调用函数 */ printf("%d\n", MAX(a,b)); printf("%d\n", MIN(a,b)); getchar(); return 0; } /* 定义求大值函数 */ int MAX(int x, int y) { if (x > y) return x; else return y; } /* 定义求小值函数 */ int MIN(int x, int y) { return x < y ? x : y; }
3. 但一般应在文件头声明:
函数原型的声明在实际运用中, 会集中声明在头文件(*.h)里面.
#include <stdio.h> /* 在文件头声明要使用的函数 */ int MAX(int x, int y); int MIN(int x, int y); int main(void) { int a = 5; int b = 6; /* 调用函数 */ printf("%d\n", MAX(a,b)); printf("%d\n", MIN(a,b)); getchar(); return 0; } /* 定义求大值函数 */ int MAX(int x, int y) { if (x > y) return x; else return y; } /* 定义求小值函数 */ int MIN(int x, int y) { return x < y ? x : y; }
4. 函数可互调用, 但不能嵌套:
#include <stdio.h> void PrintSum(int x, int y); int sum(int x, int y); int main(void) { PrintSum(1,2); PrintSum(111,222); getchar(); return 0; } void PrintSum(int x, int y) { printf("%d + %d = %d;", x, y, sum(x,y)); putchar('\n'); } int sum(int x, int y) { return x + y; }
5. 关于无参数、无返回值的函数:
如果函数没有参数, 最好是 fun(void), 不过 fun() 也行;
如果函数没有返回值, 要注明返回类型是 void;
在 C 语言中调用无参函数也要带括号.
#include <stdio.h> void prn(void); int main(void) { prn(); /* 调用无参函数 */ getchar(); return 0; } void prn(void) { printf("ok\n"); }
6. 声明函数时可以省略形参:
#include <stdio.h> int sum(int, int, int); /* 省略形式参数 */ int main(void) { printf("%d\n", sum(1,2,3)); getchar(); return 0; } int sum(int x, int y, int z) { return(x + y + z); }
7. 函数的参数一般不要超过 7 个:
但 C99 可以支持到 127 个参数.
#include <stdio.h> int sum(int, int, int, int, int, int, int); int main(void) { printf("%d\n", sum(1,2,3,4,5,6,7)); getchar(); return 0; } int sum(int a, int b, int c, int d, int e, int f, int g) { return(a + b + c + d + e + f + g); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2007-12-02 给动态数组添加一个元素
2007-12-02 长字串与宽字串
2007-12-02 长字串与短字串