【C语言初阶】函数的具体用法,有这篇博客就够了 1

简介: 【C语言初阶】函数的具体用法,有这篇博客就够了

一.函数是什么?

维基百科对函数的定义:子程序。

在计算机科学中,子程序,是一个大型程序中的某部分代码,由一个或者多个语句块组成。他负责完成某项特定的任务,而且较于其他代码,具备相 对的独立性。一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库


二.常用的函数

1.库函数

什么会有库函数?

1. 我们知道在我们学习C语言编程的时候,总是在一个代码编写完成之后迫不及待的想知道结果,想把这个结果打印到我们的屏幕上看看。这个时候我们会频繁的使用一个功能:将信息按照一定的格式打印到屏幕上(printf)。

2. 在编程的过程中我们会频繁的做一些字符串的拷贝工作(strcpy)。

3. 在编程是我们也计算,总是会计算n的k次方这样的运算(pow)。

像上面我们描述的基础功能,它们不是业务性的代码。我们在开发的过程中每个程序员都可能用的到,


为了支持可移植性和提高程序的效率,所以C语言的基础库中提供了一系列类似的库函数,方便程序员进行软件开发。


很多初学者可能对下面这段代码有疑惑,这是什么呢?

#include <stdio.h>

这就是我们使用的最基本的一个包含库函数的头文件,你所用的scanf,printf等都定义在它里面。


不相信?我们验证一下

ac94840253d04d95bfcc18a939377430.png


可见,少了库函数,我们这个程序是无法运行的。


那怎么学习库函数呢?


下面提供一个学习库函数的网站:c plus plus

9bd29fbef4114744b036b8bb562ad536.png


简单总结一下,C语言常用的库函数都有:


IO函数

字符串操作函数

字符操作函数

内存操作函数

时间/日期函数

数学函数

其他库函数


注:

库函数必须知道的一个秘密就是:使用库函数,必须包含 #include 对应的头文件。

如何学会使用库函数?

需要全部记住吗?No!


需要学会查询工具的使用:

MSDN(Microsoft Developer Network)

c plus plus

英文版

中文版


英文很重要。最起码得看懂文献。


所以如果你想真正学好C语言,一定要注意提高自己的英语水平哦!


2.自定义函数

如果库函数能干所有的事情,那还要我们程序员干什么?

所以更加重要的是自定义函数。

自定义函数和库函数一样,有函数名,返回值类型和函数参数。

但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间


函数的组成:

ret_type fun_name(para1, * )
{
statement;//语句项
}
ret_type 返回类型
fun_name 函数名
para1   函数参数

我们现在举几个实战例子带大家体会一下

写一个函数可以找出两个整数中的最大值。

#include <stdio.h>
//get_max函数的设计
int get_max(int x, int y)
{
return (x>y)?(x):(y);//三目操作符。如果条件为真返回第一个数,如果条件为假,返回第二个数
}
int main()
{
int num1 = 10;
int num2 = 20;
int max = get_max(num1, num2);
printf("max = %d\n", max);
return 0;
}

让代码走起来看看我们的效果

ff5afb09fba04e8ebcfa511598411d10.png

再举个例子:

写一个函数可以交换两个整形变量的内容。

void Swap2(int* px, int* py)
{
  int tmp = 0;
  tmp = *px;
  *px = *py;
  *py = tmp;
}
int main()
{
  int num1 = 1;
  int num2 = 2;
  Swap2(&num1, &num2);
  printf("Swap2::num1 = %d num2 = %d\n", num1, num2);
  return 0;
}

结果如下:

dbe67a320f4a4729b1b861862bb47565.png


第一个代码非常简单这里就不说了,而第二个代码会在下面函数的传值调用以及传址调用中作为例子介绍,这里没看懂别找急咱先接着往下看。


这里有可能有人会问:


为啥要定义一个函数啊,我直接在主程序里敲不就好了吗?


定义、封装函数的意义:

cf7a97b7eee24147966a497ae7b44960.png

目录
相关文章
|
1天前
|
编译器 程序员 C语言
【C语言篇】从零带你全面了解函数(包括隐式声明等)(下篇)
⼀般情况下,企业中我们写代码时候,代码可能⽐较多,不会将所有的代码都放在⼀个⽂件中;我们往往会根据程序的功能,将代码拆分放在多个⽂件中。
|
1天前
|
存储 缓存 编译器
【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)(下篇)
scanf处理⽤⼾输⼊的原理是,⽤⼾的输⼊先放⼊缓存,等到按下回⻋键后,按照占位符对缓存进⾏解读。 解读⽤⼾输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到第⼀个不符合条件的字符为⽌。
|
22小时前
|
C语言
【C语言】字符串及其函数速览
【C语言】字符串及其函数速览
11 4
|
22小时前
|
C语言
【C语言】epoll函数
【C语言】epoll函数
8 0
|
1天前
|
C语言
【C语言篇】字符和字符串以及内存函数详细介绍与模拟实现(下篇)
perror函数打印完参数部分的字符串后,再打印⼀个冒号和⼀个空格,再打印错误信息。
|
1天前
|
存储 安全 编译器
【C语言篇】字符和字符串以及内存函数的详细介绍与模拟实现(上篇)
当然可以用scanf和printf输入输出,这里在之前【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)已经讲过了,这里就不再赘述,主要介绍只针对字符的函数.
|
1天前
|
程序员 编译器 Serverless
【C语言篇】从零带你全面了解函数(包括隐式声明等)(上篇)
函数的参数部分需要交代清楚:参数个数,每个参数的类型是什么,形参的名字叫什么。
|
6天前
|
存储 C语言
【C语言函数】static和extern关键字修饰
【C语言函数】static和extern关键字修饰
|
7天前
|
C语言 C++
|
15天前
|
机器学习/深度学习 C语言
九/十:《初学C语言》— 扫雷游戏实现和函数递归基础
【8月更文挑战第5天】本篇文章用C语言采用多文件编写实现了一个基础的扫雷游戏(附源码),并讲解了关于函数递归的基础概念及其相对应的习题练习(附源码)
29 1
九/十:《初学C语言》— 扫雷游戏实现和函数递归基础