栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言(函数概念)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言(函数概念)

函数
  • 初识函数
      • 函数的定义
      • 格式化输入,输出
    • 函数调用
      • 函数调用方式
      • 嵌套调用
      • 递归调用
    • 内部函数和外部函数
        • 外部函数
        • 内部函数
      • 爱你们
        • 爱你们
          • 爱你们

初识函数

什么是函数呢?

  1. 函数是C语言的模块,一块块的,有较强的独立性,可以相互调用,也就是说,你可以在函数A中调用函数B,又可在函数B中调用函数C,不仅如此,你还可以调用函数自身(比如递归调用)。
  2. 函数是完成一个个完成特定任务的功能集合,它能完成你所想要的某种特定功能,当你要用时,只需要调用它即可,在后续的修改或是维护过程中,只需要针对这一个进行修改即可。

为什么需要函数呢?

  1. 在我们写代码的时候,有时候会重复写一段代码,而这段代码所执行的功能,操作是一样的,只是针对的数据不一样,这个时候,只需要将这段功能写成一个函数模块,在需要用到的时候调用即可,进而避免了写重复的代码,避免了重复性操作。
  2. 方便代码的维护,当我们知道哪个部分出问题后,或者需要修改某个功能,那就只需要修改那部分的代码即可。
函数的定义

在C程序设计模块化编程思想中,模块的功能是由若干个函数实现的,每个函数负责相应的功能
函数可以分为为库函数和自定义函数
一个 C程序由一个main( )函数和若干个普通函数构成,main( )函数是这个程序的入口。
定义一个函数的语法格式如下:

返回值类型 函数名(参数类型 参数名1,参数类型 参数名2,......参数类型 参数名n)
{
    执行语句
    .....
    return 返回值;
 }

( )括号中的为参数列表

  1. 无参函数
    即在上面格式中,如果函数不需要接受参数,参数列表为空,这样的函数称为无参函数
#include 
void func()//定义一个将字符串,打印输出到控制台的功能 
{
	printf("这是我第一个调用函数!n"); 
} 
int main()
{
	func();//调用func无参函数 
	return 0;
}
运行结果:
这是我第一个调用函数!

  1. 有参函数
    有参函数需要在定义时,在函数名称后面的括号中填写参数,用于接收调用函数传入的数据
#include 
void func(int x,int y) 
{
	int sum;
	sum=x+y;
	printf("x+y=%dn",sum); 
} 
int main()
{
	func(1,2);//调用func函数 
	return 0;
}
运行结果:
x+y=3

格式化输入,输出
  1. printf( )函数用于向控制台输出数据
#include  
int main()
{
	printf("%cn",'h');//输出字符 
	printf("%sn","你好,世界");//输出字符串 
	printf("%f %.1fn",3.14,3.14);//以十进制输出一个浮点数 ,。1f表示保留一位小数 
	printf("%d%2d%6d%n",5,2,0);//以十进制输出一个有符号整数 ,%3d表示,每个数据占据3位 
	printf("%un",25);//以十进制输出一个无符号整数 
	printf("%on",25);//以八进制输出一个整数 
	printf("%xn",25);//以十六进制输出一个小写整数 
	printf("%Xn",25);//以十六禁止输出yi个大写整数 
	printf("%en",3.14);//以科学计数法输出一个小写浮点数
	printf("%En",3.14);//以科学计数法输出一个大写浮点数 
}
h
你好,世界
3.140000 3.1
5 2     0
25
31
19
19
3.140000e+000
3.140000E+000
我感觉我敲的代码不怎么对
  1. scanf( )函数用于读取用户输入的数据
#include  
int main()
{
	printf("请输入字符串:");
	char str[64];
	scanf("%s",str);
	printf("%sn",str);
	return 0; 

}
运行结果:
请输入字符串:你的名字
你的名字

函数调用

一个良好的应用程序,不因该在一个函数中实现所有的功能,程序由若干功能不同的函数组成,函数之间会存在互相调用的情况。

函数调用方式

主函数可以调用其他普通函数,普通函数可以互相调用,但是普通函数不能调用主函数

函数名(实参1,实参2,...,实参n);

根据函数在程序中出现的位置不同,可将函数的调用方式分3种

  1. 将函数作为表达式调用
    将函数作为表达式调用时,函数的返回值参与表达式的运算,此时要求函数必须有返回值
int a=max(10,20);

上述代码中,函数max( )为表达式的一部分,max的返回值被赋予整型变量a

  1. 将函数作为语句调用
    函数以语句的形式出现时,可以将函数作为一条语句进行调用
printf("nihao,shijie");

此时,调用了输出函数printf( ),此时不要求有返回值,只要求函数完成一定的功能

  1. 将函数作为实参调用
    将函数作为实参调用时,其实就是将函数返回值作为函数参数,此时要求函数必须有返回值
printf("%dn",max=(10,20));

此时,将max函数的返回值最为printf函数的实参来使用

上面的代码中,我们都见到或者遇到过,我们需要理解每行代码的内容及其含义

嵌套调用

C语言中函数的定义是独立的,即一个函数不能定义在另一个函数的内部,
但在调用一个函数时,可以在一个函数中调用另一个函数

#include 

int fun2(int m)
{
    return m*m;
}
int fun1(int x,int y)
{
    return fun2(x)+fun2(y);
}
int main(){
     int a=0,b=0;
     scanf("%d%d",&a,&b);
     printf("a和b的平方和:%d ",fun1(a,b));
     return 0;
}
运行结果:
1
2
a和b的平方和:5

递归调用

程序中函数自己调用自己
作用:大大减少了程序的代码量

#include
int digui(int n);//递归函数的函数说明
int main()
{
	printf("你所输入的数字之内所有之和:");
	int i,ret;
	scanf("%d",&i) ;
    ret =digui(i);//ret等于函数的返回值
	printf("%d内所有数字之和为%d",i,ret);
	return 0;	
}
int digui(int n)
{
	if(n>=1)
	 {
		return n+digui(n-1);
	 }
	else
		return 0;
}

运行结果:
你所输入的数字之内所有之和:100
100内所有数字之和为5050
内部函数和外部函数

函数的调用不局限在一个函数同一个源文件,不同源文件中的函数可以互相调用。根据函数能否被其他函数调用,将函数分为内部函数和外部函数

外部函数

开发大型项目,可能包含很多源文件来分别实现,最终,再整合在一起,有时,一个源文件中,需要调用其他源文件中的函数

被其他源文件调用的函数称为外部函数
格式:

extern int add(int x,int y);
//add()函数是定义在其他源文件中的外部函数
//使用extern关键字声明要调用的外部函数

first.c

extern int add(int x,inty)//编译器默认add()为外部函数
{
return x+y;
}

second.c

extern int add(int x,int y)
void main
{
printf("%d",add(1,2));//调用外部addj函数
内部函数

外部函数,只要声明一个函数原型,就可以调用其他源文件中的函数,但是,当多人开发时,可能出现函数重名的情况,不同源文件中的同名函数会相互干扰
此时,就需要一些特殊函数,只在定义的文件中有效,这类函数称为内部函数

只能在当前源文件中被调用,不能被其他源文件所调用
格式:

static void show(int x)
{
printf("%dn",x);
第一个文件
#include
void show()
{
printf("%s n","first.c");
}
第二个文件
#include
static void show()
{
printf("%s n","second.c");
}
void main()
{        
show();
}
如果把static去掉,就会出错

###全局变量与局部变量的区别大家去这里观看点这里

从现在做起,坚持下去,一天进步一小点,不久的将来,你会感谢曾经努力的你!

如果又出错的,请各位友友指正。

新人报到,各位友友们,给我个三联(点赞,关注,收藏)

爱你们 爱你们 爱你们
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352707.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号