内部函数和外部函数

我们之前了解到,变量有着作用域,有局部变量和外部变量之分。
那么相对于函数而言,也有着内部函数与外部函数的区别。

在程序中,有的函数可以被本文件中的其他函数调用,
也可以被其他文件中的函数调用
但是有的函数却只能被本文件中的其他函数调用,
不能被其他文件中的函数调用。

我们定义一个函数的目的就是为了让它被另外的函数调用,
那么在不加声明的情况下,
这个函数就是全局的,
也就是说该函数既可以被本文件中的函数调用,
也可以被其他文件中的函数调用。

这里我们就需要考虑一些情况,
比如在命名时,两个文件中对两个不同的函数取了相同的名字,
且两个函数只在本文件中发挥作用。
那么,为了避免冲突,就需要对函数进行限制,让它们只能在本文件中使用。

我们根据函数能否被其他源文件调用,把它们分为外部函数内部函数

内部函数

只能被本函数中其他函数调用的函数。

形式:
static 类型名 函数名(形参表)
例子:
static int max(int a,int b)

别名:
静态函数

在不同的文件中同名的内部函数是互不干扰的。

外部函数

可以被其他文件中的函数调用的函数。

形式:
extern 类型名 函数名(形参表)

例子:
extern int max(int a,int b)

extern可以省去,默认为外部函数。

我们需要注意,在其他文件中调用这个函数的时候,声明时需要加上关键字extern。这个是可以省略的。
这就表示该函数是在其他文件中定义的外部函数。

接下来我们来看程序:
给出一段字符串,删除其内的某一个字符。

我们利用外部函数来书写。
思路如下:
1.输入一个字符串
2.对字符串中的元素从第一个开始与要删除的字符对照
3.删除字符
4.删除的同时被删除的位置用空字符代替。

那么我们就定义三个外部函数,分别是输入字符串,删除字符和输出字符串。

文件1#include <stdio.h>
int main()
   {
    extern void enter(char a[]);
    extern void delete(char a[],char c);
    extern void print(char a[]);                    //声明三个外部函数
    char c,a[100];                                    //定义变量,数组
    enter(a);                                           //调用输入函数
    scanf(%c”,&c);                                 //输入要删除的字符
    delete(a,c);                                        //调用删除函数
    print(a);                                           //调用输出函数
    return 0;
   }

文件2void enter(char a[100])
   {
    gets(a);                                          //字符串输入函数
   }

文件3void delete(char a[],char c)
   {
    int i,j;
    for(i=j=0;a[i]!=‘\0;i++)
        if(a[i]!=c)
          a[j++]=a[i];                   //这里需要注意j++是先运行后加数
    a[j]=‘\0;                    //这里说的是检测到相同的位置用空字符代替
   }

文件4void print(char a[])
   {
    printf(%s\n”,a);
   }

在此我们就可以理解外部函数的基本形式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值