C/C++教程

C语言基础系列—函数

本文主要是介绍C语言基础系列—函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

小伙伴们都学到函数了吗?今天的基础系类,我们一起来了解了解函数的一些内容吧!

目录

1,定义:

 2, 分  类:

3,函数的参数

4,函数的调用

1,传值调用

2,传址调用

3,函数的嵌套调用和链式访问

5,函数声明,定义

1,函数的声明

2,函数的定义


1,定义:

首先当然是先上定义: C语言函数是一种函数,用来编译C语言,一般包括字符库函数,数学函数,目录函数,进程函数,诊断函数,操作函数等。

具体大家想看的话,可以去看看:

C语言函数_百度百科 (baidu.com)d

但是这里我给出维基百科中的定义:

在计算机科学与技术中,子程序是一个大型程序中的某部分代码,由一个或多个语句块组成,它负责完成某项特定任务,而相较于其他代码,具备相对独立性。

一般会有输入参数,并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库。 

 2, 分  类:

包括,库函数和自定义函数。

像我们常使用的一些函数如printf,scanf都是一些库函数,而我们自己写的一些函数叫自定义函数

库函数是一些我们经常使用的函数,被c语言提供。而我们自己设计的函数则更能给我们发挥的空间,让我们更便利地解决问题,开发。

很多时候我们写一些代码实现功能时,都会封装成函数,这样可移植性高,当其他人想使用的,就可以直接拿去使用。(因为这块代码封装成函数时,会尽量做到只处理一个功能,那么就可以直接让其他人拿去使用)

函数一般包括,函数返回类型,函数名,函数参数,函数体等。

3,函数的参数

函数的参数包括实际参数和形式参数。

实际参数,是真实传递给函数的参数,可以是常量,变量,表达式,函数等。无论实参是何种类型,他们的都必须有确定的值。

形式参数,是指函数名后面括号中的变量,不调用函数时是不开辟空间的,只有在被函数调用的过程中,才会真实在内存中开辟空间,形参只在函数中有效。

4,函数的调用

1,传值调用

这个只是将实参的值传给形参,然后在函数中对形参进行操作,对实参没有影响。

重点来了:形参相当于实参的一份临时拷贝。

2,传址调用

这类调用会将实参的地址交给形参,在配合解引用符*的使用,会让形参可以影响到实参

最简单的一个例子就是:调换两个变量的值

像这类传值调用,是没有办法交换变量的值的:

#include<stdio.h>
void change(int i, int j)
{
	int tmp = 0;
	tmp = i;
	i = j;
	j = tmp;
}
int main()
{
	int i = 10;
	int j = 5;
	change(i, j);
	printf("%d %d", i, j);
	return 0;
}

而使用传址调用会涉及到后面指针的知识,但是是可以交换的。

#include<stdio.h>
void change(int* i, int* j)
{
	int tmp = 0;
	tmp = *i;
	*i = *j;
	*j = tmp;
}
int main()
{
	int i = 10;
	int j = 5;
	change(&i, &j);
	printf("%d %d", i, j);
	return 0;
}

这就是传值和传址的区别了。

3,函数的嵌套调用和链式访问

嵌套调用是,在函数中再次调用函数(递归就是用这个原理)

#include<stdio.h>
void print2()
{
	printf("hello");
}
void print1()
{
	print2();
}
int main()
{
	print1();
	return 0;
}

链式访问是值,用一个函数的返回值作为另一个函数的参数

#include<stdio.h>
int main()
{
   printf("%d",printf("hello\n"));
  
  return 0;
}

这里会打印hello和6,就printf的函数返回值作为另一个printf函数的参数。

5,函数声明,定义

1,函数的声明

1,就是告诉编译器,有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,无关紧要。

2,函数的声明一般出现在函数的使用之前。要满足先声明后使用。。

3,函数的声明一般放在头文件中。

2,函数的定义

函数的定义是指函数的具体实现,交待函数功能的实现。

具体可以看看下面的代码

#include<stdio.h>

int main()
{
   void print1();//h函数声明
   void print2();
	print1();
	return 0;
}
void print2()//函数定义
{
	printf("hello");
}
void print1()
{
	print2();
}

如果将函数声明删去,程序会报错,大家可以去试试。

函数递归的部分内容多,有一些很经典的题目,在下个一篇博客再和大家分享吧。今天这篇博客就到这里结束啦。码字不易,看到这里不妨给博主点个关注,点个赞吧。我会坚持更新的。

如有错误,请联系修改。有什么建议,或者大家想看些其他什么东西,也可以在评论区告诉博主,虽然博主不一定会,但是可以学。学完之后在和大家分享,交流,共同进步。

参考资料:

C语言函数_百度百科 (baidu.com)

这篇关于C语言基础系列—函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!