c语言 自定义函数,c语言自定义函数的使用方法,C语言自定义函数的实现

c语言 自定义函数,c语言自定义函数的使用方法,C语言自定义函数的实现

本文主要介绍自定义函数在C语言中的实现,并通过示例代码进行了详细介绍。对大家的学习或工作都有一定的参考价值。有需要的朋友下面跟边肖学习。

函数是一段可重用的代码,用于独立完成一项功能。它可以接收或不接收用户传递的数据。接收用户数据的函数在定义时需要指定参数,而那些不需要指定的。据此,函数可分为参数函数和非参数函数。

将代码段封装成函数的过程称为函数定义。

C语言中无参数函数的定义

如果函数没有接收到用户传递的数据,可以定义为不带参数。如下所示:

数据类型functionName(){

//正文

}

DataType是返回值类型,可以是C语言中的任何数据类型,如int、float、char等。

FunctionName是函数名,是一种标识符。命名规则与标识符的规则相同。函数名后面的括号()不能太短。

Body即函数体,是函数需要执行的代码,是函数的主要部分。即使只有一条语句,函数体也要用{}括起来。

如果有返回值,使用函数体中的return语句返回。返回数据的类型应该与数据类型相同。

例如,定义一个函数来计算从1到100相加的结果:

int sum(){

int i,sum=0;

for(I=1;i=100i ){

sum=I;

}

返回总和;

}

累加的结果保存在变量sum中,最后由return语句返回。是sumint类型,返回值也是int类型。它们一一对应。

Return是C语言中的一个关键字,只能用在返回处理结果的函数中。

完成上面的代码:

#包含stdio.h

int sum(){

int i,sum=0;

for(I=1;i=100i ){

sum=I;

}

返回总和;

}

int main(){

int a=sum();

printf('总和为%d\n ',a);

返回0;

}

运行结果:

总数是5050英镑

你不能嵌套函数的定义。main也是一个函数定义,所以应该把sum放在main外面。函数必须在使用前定义,所以sum应该放在main之前。

注意:main是函数定义,不是函数调用。当可执行文件加载到内存后,系统从main函数开始执行,即系统会调用我们定义的main函数。

无返回值函数

有些函数不需要返回值,或者返回值的类型不确定(很少),所以可以表示为void,例如:

void hello(){

printf ('Hello,world \ n ');

//如果没有返回值,则不需要返回语句

}

Void是C语言中的一个关键字,意思是“空类型”或者“无类型”。在大多数情况下,它意味着没有返回语句。

C语言中参数函数的定义

如果函数需要接收用户传递的数据,应该用参数定义。如下所示:

数据类型函数名称(数据类型1参数1,数据类型2参数2.){

//正文

}

数据类型1参数1,数据类型2参数2.是参数列表。一个函数可以只有一个参数,也可以有多个参数,用。参数本质上也是变量,定义时要注明类型和名称。与无参数函数的定义相比,无参数函数的定义只多了一个参数表。

数据参数传递到函数内部进行处理,然后用返回值通知函数外部。

改变上面的例子来计算从m到n相加的结果:

int sum(int m,int n){

int i,sum=0;

for(I=m;I=n;i ){

sum=I;

}

返回总和;

}

参数列表中给定的参数可以像普通变量一样在函数体中使用。

当调用sum()函数时,需要向其传递两段数据,一段为M,一段为n,可以直接传递整数,例如:

int result=sum(1,100);//1传递给M,100传递给n。

您还可以传递变量:

int begin=4;

int end=86

int result=sum(begin,end);//begin传递给m,end传递给n。

也可以一起传递整数和变量:

int num=33

int result=sum(num,80);//num传递给m,80传递给n。

定义函数时给出的参数称为形参,简称形参;调用函数时给出的参数(即传递的数据)称为实际参数,简称实参。当调用函数时,实参的值被传递给形参,这相当于一个赋值操作。

原则上,参数的类型和数量应该与形式参数一致。如果可以执行自动类型转换或强制类型转换,则实参类型也可以不同于形参类型。例如,如果将int类型的参数传递给float类型的参数,将发生自动类型转换。

完成上面的代码:

#包含stdio.h

int sum(int m,int n){

int i,sum=0;

for(I=m;I=n;i ){

sum=I;

}

返回总和;

}

int main(){

int begin=5,end=86

int result=sum(begin,end);

printf('从%d到%d的和是%d\n ',begin,end,result);

返回0;

}

运行结果:

5和86的和是3731

定义sum()时,参数m和n的值未知;调用sum()时,begin和end的值分别传递给m和n,与给变量赋值的过程相同。它相当于:

m=begin

n=结束;

函数定义不能嵌套。

强调C语言不允许函数的嵌套定义;也就是说,不能在一个函数中定义另一个函数,而必须在所有函数之外定义另一个函数。Main()也是一个函数定义,不能在main()函数内部定义新函数。

下面的例子是错误的:

#包含stdio.h

void func1(){

printf(' http://c . biancheng . net ');

void func2(){

printf(‘C语言白怪物’);

}

}

int main(){

func 1();

返回0;

}

有些初学者认为在func1()内部定义了func2(),调用func1()就会调用func2(),这是错误的。

正确的写法应该是这样的:

#包含stdio.h

void func2(){

printf(‘C语言白怪物’);

}

void func1(){

printf(' http://c . biancheng . net ');

func 2();

}

int main(){

func 1();

返回0;

}

func1()、func2()和main()函数是并行的,谁也不能位于谁的内部。要达到“调用func1()时调用func2()”的目的,必须在func1()外定义func2(),在func1()内调用func2()。

一些编程语言允许函数的嵌套定义,比如JavaScript,其中经常使用函数的嵌套定义。

递归函数(两个简易的递归调用)

1,阶乘

功能声明

int my fun(int num);

功能实现

int MyFun(int num){

//通用函数

//int sum 1=1;

//for(int I=1;i=numi ) {

//sum 1 *=I;

//}

//返回sum1

//递归调用

if (num==1||num==0) {

返回1;

}否则{

返回num * my fun(num-1);

}

}

转移

printf('sum=%d\n ',my fun(6));

操作效果

2,菲波那切数列数列

功能声明

int FBS NQ(int num);

功能实现

int fbsnq(int num){

//递归

if(num==1||num==2){

返回1;

}

返回FBS NQ(num-1)FBS NQ(num-2);

//普通

//int n1=1,n2=1,temp=0;

//if (num==1||num==2) {

//返回1;

//}

//int I=2;

//for(;inumi ){

//temp=n1 N2;

//n1=N2;

//N2=temp;

//}

//返回temp

}

函数的调用

for(int I=1;i=30i ) {

if ((i-1)%5==0) {

printf(' \ n ');

}

printf('d',FBS NQ(I));

}

printf(' \ n \ n ');

运行结果

就是这样。本文介绍了C语言自定义函数的实现。有关C语言自定义函数的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: