0
点赞
收藏
分享

微信扫一扫

【C语言】函数的深度解析(1)

Gaaidou 2022-07-12 阅读 110

文章目录


前言

在学数据结构的时候,我们很多人不知道在从何学起,也不知道怎么巩固所学的知识,今天在这里向大家推荐一个我认为非常优秀的一个刷题网站:牛客网,其中含有大量的算法题和面试题,
链接:牛客网YYDS
快去刷题吧,开启你的征途之旅吧!
——————————————————————————————
首先先写上几句话:献给坚持创作的我和点开这篇文章希望进步的你

人的改变是在一瞬间完成的。
是做英雄,还是做狗熊,也是在一瞬间决定的。
无数次的一瞬间,无数次的小决定,就组成了我们断断续续的一生。
有人一生轰轰烈烈痛痛快快;有人一生郁郁寡欢愁眉不展。
生活中,我喜欢与充满阳光的人交往。他们的热情,他们的言语,能稀释掉我内心的很多冰块。
世界上不开心的事儿已经太多,又何必多想,又何必多念?
今朝有酒今朝醉,我是一个没有明天的人。
我每天都是在走向死亡,多活一天,便少一天。我每天的文字都是遗产。

1.函数是什么?

函数我们可能会想的是数学中的函数,但这里我们要说的是计算机语言中的函数!

维基百科中对函数的定义:【子程序】

百度百科中对函数的定义是:子程序、(OOP中)方法。

2.C语言中函数的分类:

a.库函数

(1)出现的原因:

(2)常见的库函数

在这里插入图片描述

(3)库函数的分类

IO函数

字符串操作函数

字符操作函数

内存操作函数

时间/日期函数

数学函数

其他库函数

(4)举例:strcpy,memset

a.strcpy

在这里插入图片描述

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main(void)
{
	char arr1[20] = { 0 };
	char arr2[] = "abc";
	strcpy(arr1, arr2);
	printf("%s", arr1);
	return 0;
}

在这里插入图片描述

b.memset

在这里插入图片描述

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main(void)
{
	char arr1[] = "hello bit!";
	memset(arr1, 'x', 5);
	printf("%s", arr1);
	return 0;
}

在这里插入图片描述
注:
但是库函数必须知道的一个秘密就是:使用库函数,必须包含 #include 对应的头文件。

(4)库函数的结构:函数名,返回值类型和函数参数。

b.自定义函数

(1)出现的原因:

(2)自定义函数的结构:函数名,返回值类型和函数参数。

在这里插入图片描述

(3)举例:get_max、swap函数:

a.求两个函数的最大值:get_max函数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int get_max(int x, int y)
{
	return  (x > y ? x : y);	
}
int main(void)
{
	int a = 3;
	int b = 5;
	int max = 0;
	max = get_max(a, b);
	printf("%d", max);
	return 0;
}

在这里插入图片描述

在这里插入图片描述

b.交换函数:swap函数

(1)错误写法:传递数值

void swap1(int x, int y)
{
	int temp = x;
	x = y;
	y = temp;
}

在这里插入图片描述

错误原因:

在这里插入图片描述
当函数调用的时候,实参传给形参,形参其实是实参的一份临时拷贝所以对形参的修改,不会影响实参

(2)正确做法:传递地址

void swap2(int* px, int* py)
{
	int temp = *px;
	*px = *py;
	*py = temp;
}

在这里插入图片描述

完整代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
void swap1(int x, int y)
{
	int temp = x;
	x = y;
	y = temp;
}
void swap2(int* px, int* py)
{
	int temp = *px;
	*px = *py;
	*py = temp;
}
int main(void)
{
	int a = 3;
	int b = 5;
	printf("交换前:a=%d,b=%d\n", a, b);
	//swap1(a, b);
	swap2(&a, &b);
	printf("交换后:a=%d,b=%d", a, b);
	return 0;
}

3.函数的参数:

a.实际参数:

get_max(3,5)//传递常量
get_max(a,b)//传递变量
get_max(3+5)//传递表达式
get_max(3,getmax(1,2))//传递函数

b.形式参数:

4.函数的调用:

a.传值调用

b.传址调用

最后

十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:

最后如果觉得我写的还不错,请不要忘记点赞✌,收藏✌,加关注✌哦(。・ω・。)

在学数据结构的时候,我们很多人不知道在从何学起,也不知道怎么巩固所学的知识,今天在这里向大家推荐一个我认为特别优秀的一个刷题网站:牛客网,其中含有大量的算法题和面试题,
链接:牛客网YYDS
################### 快去刷题吧,开启你的征途之旅吧!####################

愿我们一起加油,奔向更美好的未来,愿我们从懵懵懂懂的一枚菜鸟逐渐成为大佬。加油,为自己点赞!

举报

相关推荐

0 条评论