C 语言函数:入门指南

小万哥
• 阅读 128

C 语言中的函数声明和定义

您可以通过以下方式创建并调用函数:

// 创建一个函数
void myFunction() {
  printf("我刚被执行了!");
}

int main() {
  myFunction(); // 调用函数
  return 0;
}

一个函数包括两个部分:

  • 声明:函数名称、返回类型和参数(如果有)
  • 定义:函数体(要执行的代码)
void myFunction() { // 声明
  // 函数体 (定义)
}

为了优化代码,建议将函数的声明和定义分开。

您经常会看到 C 程序在 main() 之前有函数声明,在 main() 之后有函数定义。这将使代码更整齐,更易于阅读:

// 函数声明
void myFunction();

// 主方法
int main() {
  myFunction(); // 调用函数
  return 0;
}

// 函数定义
void myFunction() {
  printf("我刚被执行了!");
}

另一个例子:

如果我们使用上一章关于函数参数和返回值的示例:

int myFunction(int x, int y) {
  return x + y;
}

int main() {
  int result = myFunction(5, 3);
  printf("Result is = %d", result);
  return 0;
}

// 输出 8 (5 + 3)

相反,最好写成这样:

// 函数声明
int myFunction(int, int);

// 主方法
int main() {
  int result = myFunction(5, 3); // 调用函数
  printf("Result is = %d", result);
  return 0;
}

// 函数定义
int myFunction(int x, int y) {
  return x + y;
}

这是一种很好的实践,因为它可以使代码更易于阅读和理解。它还允许您在其他文件或模块中使用函数声明,而无需包含整个函数定义。

C 语言中的递归

递归是指使函数调用自身的技巧。这种技术提供了一种将复杂问题分解为更易于解决的简单问题的途径。

递归可能有点难懂。弄清楚它如何工作的最佳方法是进行试验。

递归示例

将两个数字相加很容易,但将一系列数字相加就比较复杂了。在以下示例中,递归用于通过将问题分解为将两个数字相加的简单任务来将一系列数字相加:

int sum(int k);

int main() {
  int result = sum(10);
  printf("%d", result);
  return 0;
}

int sum(int k) {
  if (k > 0) {
    return k + sum(k - 1);
  } else {
    return 0;
  }
}

示例解释

当调用 sum() 函数时,它将参数 k 添加到所有小于 k 的数字的和中并返回结果。当 k 变成 0 时,函数只返回 0。程序运行时,会遵循以下步骤:

  • 10 + sum(9)
  • 10 + (9 + sum(8))
  • 10 + (9 + (8 + sum(7)))
  • ...
  • 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + sum(0)
  • 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0

由于函数在 k 为 0 时不调用自身,因此程序在此停止并返回结果。

开发人员应该非常小心地使用递归,因为它很容易写出永远不会终止的函数,或者会使用过多的内存或处理器资源的函数。然而,当正确编写时,递归可以成为一种非常高效和数学上优雅的编程方法。

C 语言中的数学函数

C 语言中还提供了一系列数学函数,允许您对数字进行数学运算。

要使用它们,您必须在程序中包含 math.h 头文件:

#include <math.h>

平方根

要找到某个数字的平方根,请使用 sqrt() 函数:

printf("%f", sqrt(16));

四舍五入

ceil() 函数将数字向上舍入到最接近的整数,floor() 函数将数字向下舍入到最接近的整数,并返回结果:

printf("%f", ceil(1.4));
printf("%f", floor(1.4));

幂次

pow() 函数返回 x 的 y 次方 (xy) 的值:

printf("%f", pow(4, 3));

其他数学函数

以下表格列出了 <math.h> 库中其他常用的数学函数:

函数 描述
abs(x) 返回 x 的绝对值
acos(x) 返回 x 的反正弦
asin(x) 返回 x 的反正切
atan(x) 返回 x 的反正切
cbrt(x) 返回 x 的立方根
cos(x) 返回 x 的余弦
exp(x) 返回 Ex 的值
sin(x) 返回 x 的正弦 (x 以弧度为单位)
tan(x) 返回某个角度的正切

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

点赞
收藏
评论区
推荐文章
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
SQL利用函数或存储过程求男或女的总分平均分
!(https://oscimg.oschina.net/oscnet/633e11621f3e13e713cf063db00d72c8aa0.png)函数alterfunctionxb(@xingbievarchar(2))returnstableas
Wesley13 Wesley13
2年前
C语言
主函数程序的入口main函数不可没有,也不可出现多行main函数,main有且仅有一个。intmain()return0main前面的int指的是函数调用后返回一个整型值。int是整形。返回0,0是整数voidmain是过时的函数。库函数C语言本身提供给我们使用的函数。数据类型:char字符型
Wesley13 Wesley13
2年前
初探 Objective
作者:Cyandev,iOS和MacOS开发者,目前就职于字节跳动0x00前言异常处理是许多高级语言都具有的特性,它可以直接中断当前函数并将控制权转交给能够处理异常的函数。不同语言在异常处理的实现上各不相同,本文主要来分析一下ObjectiveC和C这两个语言。为什么要把ObjectiveC和
Wesley13 Wesley13
2年前
go 的匿名函数和闭包
匿名函数匿名函数是指不需要定义函数名的一种函数实现方式。在Go语言中,函数可以像普通变量一样被传递或使用,这与C语言的回调函数比较类似。不同的是,Go语言支持随时在代码里定义匿名函数。匿名函数由一个不带函数名的函数声明和函数体组成,如下所示:!(https://
Wesley13 Wesley13
2年前
PHP匿名函数及闭包
匿名函数在编程语言中出现的比较早,最早出现在Lisp语言中,随后很多的编程语言都开始有这个功能了,目前使用比较广泛的Javascript以及C,PHP直到5.3才开始真正支持匿名函数,C的新标准C0x也开始支持了。匿名函数是一类不需要指定标示符,而又可以被调用的函数或子例程,匿名函数可以方便的作为参数传递给其他函数,最常见应用是作为回调函数
Wesley13 Wesley13
2年前
PHP匿名函数及闭包(精讲)
匿名函数在编程语言中出现的比较早,最早出现在Lisp语言中,随后很多的编程语言都开始有这个功能了,目前使用比较广泛的JavaScript以及C,PHP直到5.3才开始真正支持匿名函数,C的新标准C0x也开始支持了。匿名函数是一类不需要指定标示符,而又可以被调用的函数或子例程,匿名函数可以方便的作为参数传递给其他函数,最常见应
小万哥 小万哥
3星期前
Go 语言函数、参数和返回值详解
函数是一组语句,可以在程序中重复使用。函数不会在页面加载时自动执行。函数将通过调用函数来执行。创建函数要创建(通常称为声明)一个函数,请执行以下操作:使用func关键字。指定函数的名称,后跟括号()。最后,在花括号内添加定义函数应执行的代码。语法Gofun
小万哥 小万哥
3个月前
C 语言用户输入详解:scanf、fgets、内存地址解析及实用指南
C语言中的用户输入您已经学习了printf()函数用于在C语言中输出值。要获取用户输入,可以使用scanf()函数:c//声明一个整数变量,用于存储我们从用户那里获得的数字intmyNum;//提示用户输入一个数字printf("请输入一个数字:\n");
小万哥 小万哥
3个月前
C 语言函数完全指南:创建、调用、参数传递、返回值解析
C语言中的函数函数是一段代码块,只有在被调用时才会运行。您可以将数据(称为参数)传递给函数。函数用于执行某些操作,它们对于重用代码很重要:定义一次代码,并多次使用。预定义函数事实证明,您已经知道什么是函数了例如,main()是一个函数,用于执行代码,pri