1.函数是什么
函数是什么,就好比我们数学中的y= f(x),在C语言中,也是如此,定义为子函数,我们都知道,C程序是由许多子程序组成的,子程序,是一个大型程序中的某部分代码, 由一个或多个语句块组 成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。也可以这么认为,函数就是子程序。
2.函数中的分类
在C程序中,函数分为两类,一类是库函数,另一类是自定义函数。
为什么会有库函数?
1. 我们知道在我们学习C语言编程的时候,总是在一个代码编写完成之后迫不及待的想知道结果,想 把这个结果打印到我们的屏幕上看看。这个时候我们会频繁的使用一个功能:将信息按照一定的格 式打印到屏幕上(printf)。 2. 在编程的过程中我们会频繁的做一些字符串的拷贝工作(strcpy)。 3. 在编程是我们也计算,总是会计算n的k次方这样的运算(pow)。这些函数在使用时可以直接使用,不需要在自己定义一个函数来实现相关操作。
设想一下,如果没有库函数,当我们需要实现某一个操作时,那么可能每一个人写出的程序都不尽相同,势必会造成繁琐,复杂。所以有了库函数之后都可以在统一的标准下使用这些函数。相比之下,每使用一次这个功能就写出一个程序的话就太复杂了。
常用的库函数有这些:
IO函数:这个是输入输出函数,比如scanf,printf,getchar,putchar等等
字符串操作函数:比如strlen、strcpy、strcmp等等
字符操作函数:大小写转换,字符分类等等
内存操作函数:memcpy,memmove,memset等等
时间/日期函数:时间戳time
数学函数:开平方sqrt,计算次方pow等等
其他库函数
简单介绍几个库函数
1.strcpy——字符串拷贝
来简单写一个程序说明:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[20] = { 0 };
char arr2[] = "hello world!!!";
char* ret = strcpy(arr1, arr2);
printf("%s\n", arr1);
printf("%s", ret);
return 0;
}
想要把arr2中的内容拷贝一份,拷贝到arr1中,也可以设置一个返回值ret来接收;
运行结果为:
这样就可以完成字符串的拷贝了。头文件是#include<string.h>
2.memsrt
什么意思呢?
简单举一个例子:
#include<stdio.h>
#include<string.h>
int main()
{
char arr[] = "hello world!!!";
char* ret = memset(arr, '*', 5);
printf("%s", ret);
return 0;
}
首先看一下运行结果:
看到这里,也就不难理解了,就是把一个字符串的前几个字符改成其他的内容。
3.自定义函数
如果只有库函数,那么是远远不够的,这时就需要自定义函数。
自定义函数和库函数一样,有函数名,返回值类型和函数参数。但是不一样的是这些都是我们自己来设计。
但它们都有共同特征:
这就是函数的写法。
下面来介绍几个函数;
.把一个数组中的元素从大到小排列,冒泡排序
void Bubble_Sort(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz - 1; i++)
{
int j = 0;
for (j = 0; j < sz - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
int arr[10] = { 0 };
while (scanf("%d %d %d %d %d %d %d %d %d %d", &arr[0], &arr[1], &arr[2], &arr[3], &arr[4],
&arr[5], &arr[6], &arr[7], &arr[8], &arr[9]) != EOF)
{
Bubble_Sort(arr, 10);
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
}
return 0;
}
当输入10 9 8 7 6 5 4 3 2 1时,输出结果为:
今天的分享就到这里了,如果有错误,大家指出来,一起进步。