如何在C语言项目中自定义函数-创新互联

本篇文章为大家展示了如何在C语言项目中自定义函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联建站为企业级客户提高一站式互联网+设计服务,主要包括网站建设、网站制作成都app软件开发公司微信小程序开发、宣传片制作、LOGO设计等,帮助客户快速提升营销能力和企业形象,创新互联各部门都有经验丰富的经验,可以确保每一个作品的质量和创作周期,同时每年都有很多新员工加入,为我们带来大量新的创意。 

C语言无参函数的定义


如果函数不接收用户传递的数据,那么定义时可以不带参数。如下所示:


dataType functionName(){
  //body
}
  • dataType 是返回值类型,它可以是C语言中的任意数据类型,例如 int、float、char 等。

  • functionName 是函数名,它是标识符的一种,命名规则和标识符相同。函数名后面的括号( )不能少。

  • body 是函数体,它是函数需要执行的代码,是函数的主体部分。即使只有一个语句,函数体也要由{ }包围。

  • 如果有返回值,在函数体中使用 return 语句返回。return 出来的数据的类型要和 dataType 一样。

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


int sum(){
  int i, sum=0;
  for(i=1; i<=100; i++){
    sum+=i;
  }
  return sum;
}

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

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

将上面的代码补充完整:


#include 
int sum(){
  int i, sum=0;
  for(i=1; i<=100; i++){
    sum+=i;
  }
  return sum;
}
int main(){
  int a = sum();
  printf("The sum is %d\n", a);
  return 0;
}

运行结果:
The sum is 5050

函数不能嵌套定义,main 也是一个函数定义,所以要将 sum 放在 main 外面。函数必须先定义后使用,所以 sum 要放在 main 前面。


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


无返回值函数


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


void hello(){
  printf ("Hello,world \n");
  //没有返回值就不需要 return 语句
}

void是C语言中的一个关键字,表示“空类型”或“无类型”,绝大部分情况下也就意味着没有 return 语句。


C语言有参函数的定义

如果函数需要接收用户传递的数据,那么定义时就要带上参数。如下所示:


dataType functionName( dataType1 param1, dataType2 param2 ... ){
  //body
}

dataType1 param1, dataType2 param2 ...是参数列表。函数可以只有一个参数,也可以有多个,多个参数之间由,分隔。参数本质上也是变量,定义时要指明类型和名称。与无参函数的定义相比,有参函数的定义仅仅是多了一个参数列表。

数据通过参数传递到函数内部进行处理,处理完成以后再通过返回值告知函数外部。

更改上面的例子,计算从 m 加到 n 的结果:


int sum(int m, int n){
  int i, sum=0;
  for(i=m; i<=n; i++){
    sum+=i;
  }
  return sum;
}

参数列表中给出的参数可以在函数体中使用,使用方式和普通变量一样。

调用 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 类型的形参就会发生自动类型转换。

将上面的代码补充完整:


#include 
int sum(int m, int n){
  int i, sum=0;
  for(i=m; i<=n; i++){
    sum+=i;
  }
  return sum;
}
int main(){
  int begin = 5, end = 86;
  int result = sum(begin, end);
  printf("The sum from %d to %d is %d\n", begin, end, result);
  return 0;
}

运行结果:
The sum from 5 to 86 is 3731

定义 sum() 时,参数 m、n 的值都是未知的;调用 sum() 时,将 begin、end 的值分别传递给 m、n,这和给变量赋值的过程是一样的,它等价于:


m = begin;
n = end;

函数不能嵌套定义

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

下面的例子是错误的:


#include 
void func1(){
  printf("http://c.biancheng.net");
  void func2(){
    printf("C语言小白变怪兽");
  }
}
int main(){
  func1();
  return 0;
}

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

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


#include 
void func2(){
  printf("C语言小白变怪兽");
}
void func1(){
  printf("http://c.biancheng.net");
  func2();
}
int main(){
  func1();
  return 0;
}

func1()、func2()、main() 三个函数是平行的,谁也不能位于谁的内部,要想达到「调用 func1() 时也调用 func2()」的目的,必须将 func2() 定义在 func1() 外面,并在 func1() 内部调用 func2()。


有些编程语言是允许函数嵌套定义的,例如 JavaScript,在 JavaScript 中经常会使用函数的嵌套定义。


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

1,阶乘

函数的声明

int MyFun(int num);

函数的实现

int MyFun(int num){
//  普通函数
//  int sum1=1;
//  for (int i=1; i<=num; i++) {
//    sum1*=i;
//  }
//  return sum1;
  // 递归调用
  if (num==1||num==0) {
    return 1;
  }else {
    return num*MyFun(num-1);
  
  }
}

调用

 printf("sum=%d\n",MyFun(6));

运行效果

 如何在C语言项目中自定义函数

2,菲波那切数列数列

函数的声明

int fbsnq(int num);

函数的实现

int fbsnq(int num){
  // 递归
  if(num==1||num==2){
    return 1;
  }
  return fbsnq(num-1)+fbsnq(num-2);
  //普通
//  int n1=1,n2=1,temp=0;
//  if (num==1||num==2) {
//    return 1;
//  }
//  int i=2;
//  for(;i

函数的调用

  for (int i=1; i<=30; i++) {
    if ((i-1)%5==0) {
      printf("\n");
    }
      printf("%10d", fbsnq(i));
  }

  printf("\n\n");

运行结果

如何在C语言项目中自定义函数

上述内容就是如何在C语言项目中自定义函数,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


本文题目:如何在C语言项目中自定义函数-创新互联
转载来源:http://scyanting.com/article/igdsg.html