第五章 函数

函数的概念

函数就是功能。每一个函数用来实现一个特定的功能。函数的名字应反映其代
表的功能。

main函数必须要由,且只能由一个。其他函数可以有多个或者没有。

函数的定义

/*
返回值类型 函数名字(形参列表)
{
   //函数体
}
*/
int max(int a, int b)
{
    
    
   if(x>y){
    
    
     return x;
   }else{
    
    
     return y
   }
}

形参必须带类型,而且以逗号分隔
函数不能嵌套,不能再一个函数体内定义另外一个函数。
函数名不能重复

函数的分类

从定义角度分类(函数是谁实现的)

1、库函数(c库实现的)
2、自定义函数(程序员自己实现的函数)
3、系统调用(操作系统实现的函数)

从参数角度分类

1、有参函数

函数由形参,可以是一个或者多个。

int func(int a, float b, double c)
{
    
    
}

2、无参函数

//void可以省略
int func(void)
{
    
    
}

从返回值角度分类

带返回值的函数

//必须返回一个char类型的数据
char func()
{
    
    
   char b = 'a';
   return b;
}
//默认返回整型
func()
{
    
    
   return 1;
}

不带返回值的函数

//void 表示没有返回值,不需要return
void func(int a)
{
    
    
  
}

函数的声明

1、概念

对已经定义的函数,进行说明。
函数的声明可以声明多次。

2、为什么要说明

有些情况下,不对函数进行声明,编译器编译的时候,可能不认识这个函数。因为编译器在编译c程序的时候,是从上往下编译的。

3、声明的方法

什么时候需要声明

1、调用函数和被调用函数在一个.c文件的时候

//被调用函数在上,不需要声明
void func(void)
{
    
    
  printf("hello");
}
void main()
{
    
    
    func();
}
//被调用函数在下,需要声明
void main()
{
    
    
    void func(void);
    func();
}
void func(void)
{
    
    
  printf("hello");
}

2、调用函数和被调用函数不在一个.c文件的时候

声明方法

1、函数中声明

void main()
{
    
    
    float add(float a, float b);//函数中声明
    //float add(float, float);//参数名可以省略
    func();
}
float add(float a, float b)
{
    
    
   return a+b; 
}

2、文件开头进行声明

扫描二维码关注公众号,回复: 17035590 查看本文章
float add(float a, float b);//在文件开头进行声明
void main()
{
    
    
    func();
}
float add(float a, float b)
{
    
    
   return a+b; 
}

3、其他文件的函数
文件Math.c

#include <stdio.h>

float add(float a, float b)
{
    
    
	return a + b;
}

头文件Math.h

extern float add(float a, float b);

main函数所在文件

#include<stdio.h>
#include "Math.h"
//或者不适用头文件,直接文件开头声明外部函数
//extern float add(float a, float b);
int main()
{
    
    
	float a = add(1.1f, 2.2f);
	return 0;
}

函数的调用

定义:

float add(float a, float b);
void main()
{
    
    
    //调用方传递的叫实参
    add(1.1f, 2.2f);
}
//形参
float add(float a, float b)
{
    
    
   return a+b; 
}

内部函数

如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static,即:
static类型名函数名(形参表);
例如,函数的首行:
static int fun(int a,int b)
表示fun是一个内部函数,不能被其他文件调用。

外部函数

如果在定义函数时,在函数首部的最左端加关键字extern,则此函数是外部函数,可供其他文件调用。
如函数首部可以为
extern int fun(int a, int b)
这样,函数fun就可以为其他文件调用。
C语言规定,如果在定义函数时省略extern,则默认为外部函数。

猜你喜欢

转载自blog.csdn.net/LookOutThe/article/details/133458115