对函数的剖析一

简介: 对函数的剖析一

一:前言

不同于数学中的函数,在c语言中可以理解成子函数,是完成某项特定任务的一小段代码。

C语言程序就是由无数个小的函数组成的。

可以分成两类:库函数和自定义函数。


二:库函数

1:标椎库

C语言标准中规定了库函数的各种语法规则,但不提供库函数,C语言的国际标准ANSIC规定了一些常用的函数的标准,被称为标准库,不同的编译器厂商根据标准给出了一系列函数的实现。这些函数被称为库函数。如:printf,scanf.库函数也是函数,但这些函数可以直接使用,明显提高了效率。


2:头文件

库函数的使用需要头文件的声明。不同的库函数可能需要不同的头文件。

三:自定义函数

1:语法形式:

返回类型+函数名(形式参数)

{函数体

}

函数返回类型可以是空类型,表示什么也不返回。

函数也可以没有参数,即void ,如果有参数,必须明确函数参数的类型和名字,以及参数个数。

2:形参和实参

实参就是实际传递给函数的参数

形参:只是形式上存在,不会向内存申请空间,只有在函数被调用时,为了存放实参传递过来的值,才会向内存申请空间。

3:return语句

1:return后面可以是一个具体的值,也可以是一个表达式,是表达式时,则先计算表达式的结果,再返回表达式的结果。

2:return后面可以什么也没有,适合函数返回类型是空类型的适合,即void。return执行后,后面的代码就不执行了。


3:return后面的返回的值和返回类型不一致时,系统自动将返回的值转换为函数的返回类型。


综上所述:看代码:


4:如果函数中出现if等分支语句,要保证每种情况下都有return返回,否则出现编译错误。如下图:当i!=5时,没有返回值。

正确写法:


4:数组做函数参数

数组传参:

1:函数的形式参数要和数组的实参个数相同

2:函数的实参是数组,形参也必须是数组

3:形参如果是一维数组,数组大小可以省略

4:形参如果是二维数组,行可以省略,列不可以

5:数组传参,形参不会创建新的数组

6:形参操作的数组和实参是同一个数组,不会开辟新的地址

一维数组传参举例:

#include <stdio.h>

void set_arr(int arr[], int sz)

{

for (int i = 0; i < sz; i++)

{

arr[i] = -1;

}

}

void printf_arr(int arr[], int sz)//两个形参

{

for (int i = 0; i < sz; i++)

{

printf(“%d “, arr[i]);

}

printf(”\n”);

}

int main()

{

int arr[] = { 1,2,3,4,5,6,7,8,9,0 };

int sz = sizeof(arr) / sizeof(arr[0]);
printf_arr(arr, sz);//先打印一次  //两个实参arr,sz
//写一个函数,让arr中的元素全部变成-1
set_arr(arr, sz);
//写一个函数,打印新的arr数组
printf_arr(arr, sz);

二维数组举例:

5:嵌套调用

嵌套调用就是函数间的相互调用,函数可以嵌套调用,不可以嵌套定义

#include <stdio.h>

//获取某年某月有多少天

int get_days_of_months(int y, int m)

{

int days[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};//得到天数

int d = days[m];

if (is_leap_year(y)&&m == 2)//函数的嵌套调用

{

d += 1;

}

return d;

}

int is_leap_year(int y)//判断是否是闰年的函数

{

if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)

return 1;

else

return 0;

}

int main()

{

int y = 0;

int m = 0;

scanf(“%d %d”, &y, &m);

int d = get_days_of_months(y, m);

printf(“%d”, d);

return 0;

}

目录
相关文章
|
2月前
|
算法 编译器 C语言
函数—C(下)
函数—C(下)
30 0
|
2月前
|
存储 编译器 Serverless
C++系列十:函数
C++系列十:函数
|
5月前
|
前端开发 JavaScript
Less的函数的介绍
Less的函数的介绍
25 0
|
5月前
|
算法 编译器
函数(2)
函数(2)
26 0
|
11月前
|
Python
什么是函数
什么是函数
68 0
|
12月前
|
算法 编译器 API
8.函数
8.函数
54 0
|
算法 程序员 C++
C/C++ 中的 strrchr() 函数
strrchr() 函数 在 C++ 中,strrchr() 是用于字符串处理的预定义函数。cstring 是字符串函数所需的头文件
254 0
|
编译器 C语言 C++
C++——函数
C++——函数
C++——函数
javaSprict 03 函数的使用
本文将讲述javaSprict中函数的声明,调用方法
javaSprict 03 函数的使用