在 C 中定义函数 – 如何定义 C 中的函数

在 C 编程中,函数扮演着基本的角色。它们使您能够编写组织良好且易于维护的代码。

在本文中,您将学习在 C 中定义函数的基础知识。

(本文视频讲解:java567.com)

在编程中,函数是执行特定任务的代码块。

函数接受输入,处理它们,执行操作,并产生输出。

函数很重要,因为它们组织了您的代码并促进了代码的可重用性。

与其一遍又一遍地编写相同的代码并重复自己,不如编写一次代码,然后在需要执行特定任务时随时使用它。

在 C 中,通常有两种类型的函数:

  • 标准库函数。标准库函数由 C 标准库提供,并在头文件中定义。标准库函数的示例包括 printf() 用于将格式化输出打印到控制台,以及 scanf() 用于从用户处读取格式化输入。两者均在 stdio.h 头文件中定义。
  • 用户自定义函数。用户自定义函数由您(程序员)定义。这些函数根据您的程序的需要和要求进行定制。例如,用户自定义函数可以计算两个数字的和或检查一个数字是偶数还是奇数。

在本文中,您将学习如何创建用户自定义函数。

这是 C 中函数的一般语法:

让我们分解一下:

  • 返回类型 让 C 编译器知道函数执行后将返回的值的数据类型。它可以是任何有效的 C 数据类型,如 intfloatchar,或者如果函数不返回任何值,则可以是 void
  • 函数名 是您给函数的名称。它应该具有意义,并准确描述函数的作用。稍后您将使用这个名称来调用函数。
  • 参数 是可选的。参数是函数在括号内接受的输入变量。函数可以接受零个或多个参数。如果函数接受多个参数,则它们由逗号分隔。每个参数由数据类型和名称组成。
  • 在大括号 {} 内部是函数的主体。这里是实际的代码,执行特定任务的指令。
  • 在函数体内部,可以有一个可选的返回值。您可以使用 return 关键字,后跟您要返回的值。如果函数具有 void 返回类型,则不需要指定返回值。

这是在 C 中调用函数的语法:

让我们分解一下:

  • 函数名 是您要调用的函数的名称。它应该与您用于定义函数的名称相同。
  • 参数 是您传递给函数的值。如果函数接受任何参数,则在调用函数时将参数放在括号内。每个参数由逗号分隔。

如果函数返回一个值,您可以将其存储在变量中以供以后使用:

让我们看一个简单的函数,用来求两个数的和:

让我们逐步分解这段代码。

我首先使用 #include <stdio.h> 包含了标准输入输出库 (<stdio.h>)。

这一行包含了标准输入输出库 (<stdio.h>),使您可以使用 printf()scanf() 函数。现在,您可以接收用户输入并将文本打印到控制台。

接下来,我定义了以下函数:

这个函数的返回类型是 int,表示它将在执行后返回一个整数值。

函数名是 add,在括号内它接受整数参数 num1num2

在大括号内,函数体包含了函数代码。在这种情况下,函数代码仅包含了返回语句 return num1 + num2;。这段代码使用 + 运算符计算 num1num2 的和,然后返回结果。

add() 函数在稍后的 main() 函数中使用前进行了定义。在 C 中,函数必须在使用之前进行定义。通过将 add() 函数定义放在 main() 函数上方,当编译器在 main() 函数中遇到函数调用时,它就会知道它了。

接下来,我定义了 main() 函数,它是每个 C 程序的起点:

main() 函数内部,我首先声明了整数变量 num1num2result

注意,num1num2 变量与 add() 函数接收的 num1num2 参数是不同的。这两个变量将存储用户将要输入的数字。

然后,我使用 printf() 函数提示用户输入第一个数字,并使用 scanf() 函数读取输入并将其存储在变量 num1 中。%d 格式说明符用于指示 scanf() 应该期望一个整数输入。

我对接收和存储第二个数字的过程完全相同。

接下来,我使用 add() 函数调用 num1num2 作为参数。add() 函数将这两个数字相加。然后,将计算结果存储在 result 变量中。

随后,我使用 printf() 函数将 num1num2result 变量打印到控制台。格式说明符 %d 用于打印整数值。

最后,return 0; 表示程序成功执行。当 C 程序终止时,它会向操作系统返回一个退出状态,0 通常表示程序没有出现任何错误。

当程序执行时,首先调用 main() 函数。

首先看到提示 Enter first number:。在我的情况下,我输入了 2 作为第一个数字。

一旦您输入一个数字,您将会看到第二个提示:Enter second number:。我将数字 3 输入为第二个数字。

然后,调用 add() 函数,该函数将数字 23 相加。

最后,打印行 The sum of 2 and 3 is 5 到控制台。

在本文中,您学习了在 C 中定义函数的基础知识。

具体来说,您学习了 C 中的两种不同类型的函数,以及定义自己函数的一般语法。

最后,您看到了一个简单的函数示例,它将两个数字相加并返回结果。

感谢阅读,祝编程愉快!

(本文视频讲解:java567.com)

printf 函数丨格式符号的特殊用法

通常我们会看到 C 语言程序运行后,会有这样的结果。

不由得感到好奇,这是怎么做到右对齐的?难道是一个一个空格敲?那这岂不是太费劲了,还要数敲了几个空格。

其实这很简单,只要在格式符号中做一点点手脚,就可以轻松实现这个效果。

首先就说一下,是怎么做到对齐的。

平常我们正常使用格式符号,都是从左到右输出,左边顶格也就是左对齐的方式。

那么想要右对齐,只要在百分号(%)在输出格式字符(d/f/c等)之间加一个数字,即可轻松实现。

运行结果:

这里的数字在格式符号中表示为宽度的意思,当输出的内容长度小于给定的宽度值,就会自动进行右对齐,左边空缺的位置用空格补上。

但当输出的内容大于给定的宽度值,例如输出内存地址,固定为 8 位,那么它就不再具备对齐的资格,该怎么输出就怎么输出。

既然可以给定的是一个数字,那我要是给一个负数,会是怎么样的呢?

运行结果:

这就跟平常打印输出好像是长得一模一样,但实际不然。

正常输出,例如 -35,在屏幕上只有 -35 三个内容。但加上 -5,在屏幕上实际有 5 个位置,其余两个是用空格进行填补的。

百分号(%)加上负号(-),在 C 语言中表示为左对齐。

接着就是在数字面前补 0 的操作。

难道这不是你在打印输出的时候,偷摸摸地手动加上 0 么?

当然不是。首先在 C 语言中数字前面加上 0,就变成了八进制的数值常数。

例如:

其次,在字符串中的格式符号前添加 0,是有可能实现的。但如果要求数字前面有 100 个 0,那不是一件非常麻烦的事情吗?要是一不小心输错,就又得从头数。

但只要在格式符号中的百分号(%)后面加上一个 0,并匹配上相应的宽度,来瞧瞧结果。

运行结果:

补 0 的效果只对 %p 符号没有效果,因为该符号的输出结果固定为 8 位。

那么,我想要它左对齐,后面补 0 呢?

很可惜,目前这个在格式符号中是实现不了的。单单说 -003 和 -300 之间就有了天大的区别。

且 %-0,亦或者 %0-,都会使得格式符号的对齐、补 0 的效果失效,最后按照正常的格式符号进行输出。

%f 和 %lf 总是会输出小数点后六位,而且一串子的 0 有时候看上去也不是那么讨喜。那么,有什么办法将其省略到后 2 位?

方法在上一篇文章中有简单地一笔带过,即使用 %.nf 格式。

该符号会对输出的小数保留到小数点后 n 位,并会自动进行四舍五入。

输出结果:

那么,问题来了,该格式对浮点数类型会进行四舍五入,并保留到小数点后 n 位。如果用在其他格式符号中,会发生什么样的奇妙效果呢?

运行结果:

从结果中可见,该符号对于整数类型的数据也是有作用的。

不过和上面的补 0 格式不同的是,%.nd 这种格式是不将负号算在给定的宽度里面,先补足数值部分,然后再加上负号,总共输出为 n+1 位。

而补 0 的格式符号,是将符号算在宽度里面,且在负号和数值之间进行补 0。只要不超过给定数值,给定多少,算负号在内就打印多少位。

printf 输出函数中格式符号的特殊应用就到此结束了,文中可能因为考虑不全面而存在纰漏,或者不足之处,欢迎大家留言指出,不胜感激。

最后,如果您觉得本篇文章还不错,对您有所帮助,点个赞支持一下呗!感谢万分!

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。