精华内容
下载资源
问答
  • 目录: 一:定义 二:函数的一般形式 组成部分 1.返回类型 ...外部函数&内联函数 1.内部函数 定义: 2.外部函数 定义: 3.内联函数 定义: 注意: 七:main 函数的参数 1. main 函数带参...

    目录:

    一:定义

    二:函数的一般形式

    组成部分

     1.返回类型

    2.函数名称

    注意: 

    3.参数

    4.函数主体

    实例:

    三:函数声明

    补充:

    四:调用函数

    实例:

    五:函数参数

    六:内部函数&外部函数&内联函数

    1.内部函数

    定义:

    2.外部函数

    定义:

    3.内联函数

    定义:

    注意:

    七:main 函数的参数

    1. main 函数带参数 :

    2.main函数没有参数:

    3.argc 和 argv 

    4.如何传递给main函数的argc和argv的呢?

    八:函数参数传递都是值传递

    为什么? 

    实例:


    一:定义

    函数是一组一起执行一个任务的语句

    每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数

    函数声明告诉编译器函数的名称、返回类型和参数

    函数定义提供了函数的实际主体

    二:函数的一般形式

    return_type function_name( parameter list )
    {
       body of the function
    }

    组成部分

     1.返回类型

    • 返回类型:一个函数可以返回一个值
    • return_type 是函数返回的值的数据类型
    • 有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void

    2.函数名称

    • 函数名称:这是函数的实际名称
    • 函数名参数列表一起构成了函数签名

    注意: 

    函数名参数列表一起构成了函数签名

    意味着可以出现参数列表不同但是函数名相同的函数。

    void print()
    {
        printf("hello world!");
    }
    
    void print(int nums)
    {
        printf("%d\n",a);
    }

    这是合法的!!!

    3.参数

    • 参数:参数就像是占位符
    • 当函数被调用时,您向参数传递一个值,这个值被称为实际参数
    • 参数列表包括函数参数的类型、顺序、数量
    • 参数是可选的,也就是说,函数可能不包含参数

    4.函数主体

    • 函数主体:函数主体包含一组定义函数执行任务的语句

    实例:

    /* 函数返回两个数中较大的那个数 */
    int max(int num1, int num2) 
    {
       /* 局部变量声明 */
       int result;
     
       if (num1 > num2)
          result = num1;
       else
          result = num2;
     
       return result; 
    }

    该函数有两个参数 num1 和 num2,会返回这两个数中较大的那个数

    三:函数声明

    return_type function_name( parameter list );

    补充:

    在函数声明中,参数的名称并不重要,只有参数的类型是必需的

    int max(int num1, int num2);
    
    等价于
    int max(int, int);

    四:调用函数

    当程序调用函数时,程序控制权会转移给被调用的函数

    实例:

    #include <stdio.h>
     
    /* 函数声明 */
    int max(int num1, int num2);
     
    int main ()
    {
       /* 局部变量定义 */
       int a = 100;
       int b = 200;
       int ret;
     
       /* 调用函数来获取最大值 */
       ret = max(a, b);
     
       printf( "Max value is : %d\n", ret );
     
       return 0;
    }
     
    /* 函数返回两个数中较大的那个数 */
    int max(int num1, int num2) 
    {
       /* 局部变量声明 */
       int result;
     
       if (num1 > num2)
          result = num1;
       else
          result = num2;
     
       return result; 
    }

    运行结果:

    Max value is : 200

    由于程序是从上向下执行,所以函数要先声明,后调用 

    由于程序是从上向下执行,所以函数要先声明,后调用

    五:函数参数

    调用类型描述
    传值调用该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。
    引用调用通过指针传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。

    六:内部函数&外部函数&内联函数

    根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数

    内部函数又称静态函数

    可以使函数的作用域只局限于所在文件

    1.内部函数

    定义:

    如果一个函数只能被本文件中其他函数所调用,它称为内部函数

    在定义内部函数时,在函数名和函数类型的前面加 static

    static 类型名 函数名 (形参表)

    2.外部函数

    定义:

    如果在定义函数时,在函数的首部的最左端加关键字 extern,则此函数是外部函数,可供其它文件调用

    extern int max (int a,int b)

    注意:如果在定义函数时省略 extern,则默认为外部函数

    3.内联函数

    定义:

    内联函数是指用inline关键字修饰的函数

    在类内定义的函数被默认成内联函数

    内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质

    内联扩展是用来消除函数调用时的时间开销

    通常用于频繁执行的函数,对于小内存空间的函数非常受益

    注意:

    • 递归函数不能定义为内联函数
    • 内联函数一般适合于不存在while和switch等复杂的结构且只有1~5条语句的小函数上,否则编译系统将该函数视为普通函数
    • 内联函数只能先定义后使用,否则编译系统也会把它认为是普通函数
    • 对内联函数不能进行异常的接口声明

    七:main 函数的参数

    main 函数其实与我们写的函数没有什么区别,它也会有自己的参数 

    1. main 函数带参数 :

    int main( int argc, char *argv[] )

    2.main函数没有参数:

    int main()

    3.argc 和 argv 

    argc 和 argv 是 main 函数的形式参数

    这两个形式参数的类型是系统规定的

    变量名称argc和argv是常规的名称,当然也可以换成其他名称

     main 的两个参数的参数名如下:

    int main( int argc, char *argv[] )

    以写成下面这样:

    int main( int test_argc, char *test_argv[] )  

    argc 是指传入参数的个数

    argv[] 是一个指针数组,指向传递给程序的每个参数

    4.如何传递给main函数的argc和argv的呢?

    C程序在编译和链接后,都生成一个exe文件,执行该exe文件时,可以直接执行

    也可以在命令行下带参数执行,命令行执行的形式为:

    可执行文件名称 参数1 参数2 ... ... 参数n

    可执行文件名称和参数、参数之间均使用空格隔开

    命令行字符串将作为实际参数传递给main函数:

    • (1) 可执行文件名称所有参数的个数之和传递给 argc
    •  (2) 可执行文件名称(包括路径名称)作为一个字符串,首地址被赋给 argv[0],参数1也作为一个字符串,首地址被赋 argv[1],... ...依次类推

    八:函数参数传递都是值传递

    本质上说,C 里面所有的函数参数传递,都是值传递

    为什么? 

    因为指针传递之所以能改变传递参数变量的值,是因为 swap 函数交换不是传递进来的指针本身而是指针指向的值

    实例:

    void swap(int *x, int *y);
    void swap(int *x, int *y){
        int temp;
        //这里操作的是指针指向的值 而不是指针
        temp = *x;
        *x = *y;
        *y = temp;
    //   倘若直接交换指针 a、b的值不会交换
    //    temp = x;
    //    x = y;
    //    y = temp;
    }
    
    int main( int argc, char *argv[] )
    {
        int a = 5;
        int b = 10;
        swap(a, b); //调用交换函数
        printf("交换结果为 a = %d, b = %d\n",a,b);
        return 0;
    }

     

    展开全文
  • pbfunc外部函数

    2017-11-10 21:55:17
    pbfunc外部函数,加密,解密pbfunc外部函数,加密,解密pbfunc外部函数,加密,解密
  • C语言之外部函数

    千次阅读 2019-07-24 18:23:30
    在需要调用此函数的文件中,用extern对函数声明,表示该函数是在其他文件中定义外部函数 实战演练:有一个字符串,内有若干个字符串,要求输入一个字符串,程序便将字符串该字符删去。要求用外部函数实现! #...

    版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/qq_42680327 

    在需要调用此函数的文件中,用extern对函数声明,表示该函数是在其他文件中定义的外部函数

    实战演练:有一个字符串,内有若干个字符串,要求输入一个字符串,程序便将字符串该字符删去。要求用外部函数实现!

    #include <stdio.h>
    void main(){
        /*以下3行声明在本函数中将要调用在其他函数中定义的3个函数*/
        extern void enter_string(char str[]);
        extern void delete_string(char str[], char ch);
        extern void print_string(char str[]);
        
        char c;
        char str[80];
    
        printf("please input enter char: ");
        enter_string(str);
        printf("please input delete char: ");
        scanf("%c",&c);
        delete_string(str,c);
        print_string(str);
    }
    #include <stdio.h>
    //定义外部函数enter_string()
    void enter_string(char str[80]){
        gets(str);      //向字符数组输入字符串
    }
    //定义外部函数delete_string()
    void delete_string(char str[], char ch){
        int i,j;
        for(i=j=0;str[i]!='\0';i++){
            if(str[i]!=ch){
                str[j++]=str[i];
            }
        }
        str[j]='\0';
    }
    void print_string(char str[]){
        printf("%s\n",str);
    }

    展开全文
  • 【C语言】外部函数和内部函数

    千次阅读 2016-02-12 08:54:23
    外部函数】  【内部函数】 1.外部函数  定义的函数能被本文件和其它文件访问(默认)。 注:不允许有同名的外部函数。 2.内部函数  定义的函数只能被本文件访问,其它文件不能访问。 注:允许...

    目录

    【外部函数】 
    【内部函数】

    1.外部函数 
    定义的函数能被本文件和其它文件访问(默认)。

    注:不允许有同名的外部函数。

    2.内部函数 
    定义的函数只能被本文件访问,其它文件不能访问。

    注:允许不同文件中有同名的内部函数。


    展开全文
  • C语言外部函数与内部函数

    万次阅读 2017-12-18 17:09:11
    内部函数,只在定义的文件中有效外部函数开发大型项目,可能包含很多源文件来分别实现,最终,再整合在一起,有时,一个源文件中,需要调用其他源文件中的函数 调用外部函数之前,需要在当前源文件中定义外部函

    函数的调用,一般是对同一个源文件中的其他函数进行调用的,也可以对另外一个源文件中的函数进行调用
    C语言中,根据函数能否被其他源文件调用,分为内部函数和外部函数
    外部函数,可以被其他源文件调用的函数
    内部函数,只在定义的文件中有效

    外部函数

    开发大型项目,可能包含很多源文件来分别实现,最终,再整合在一起,有时,一个源文件中,需要调用其他源文件中的函数
    调用外部函数之前,需要在当前源文件中定义外部函数
    定义外部函数的方式,在函数的返回值类型前面添加extern关键字
    示例代码
    extern int add(int x,int y);
    编译器,通过extern关键字会知道,add()函数是定义在其他文件中的外部函数
    示例代码

    第一个源文件
    int add(int x,int y)
    {
    return x+y;
    }
    第二个源文件
    #include <stdio.h>
    extern int add(int x,int y);
    void main()
    {        
    printf("sum=%d\n",add(1,2));
    }

    运行结果
    这里写图片描述

    C语言中
    定义外部函数时,可以省略关键字extern
    修改如下
    int add(int x,int y);

    由函数的返回类型、函数名和参数列表组成,这类格式的代码被称为函数原型
    当代码中包含函数原型时,可能有两种情况
    1、程序员希望编译器自动从其他文件中,查找该函数的定义
    2、程序员先定义未实现的空函数,然后,在其他文件中具体实现

    注意
    声明外部函数时,无论有没有关键字extern,外部函数与原函数定义的返回值类型、函数名称和参数列表必须一致

    内部函数

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

    定义内部函数
    在定义内部函数时,需要在函数的返回值类型前面添加static关键字,也称静态函数
    示例代码

    第一个文件
    #include<stdio.h>
    void show()
    {
    printf("%s \n","first.c");
    }
    第二个文件
    #include<stdio.h>
    static void show()
    {
    printf("%s \n","second.c");
    }
    void main()
    {        
    show();
    }

    运行结果
    这里写图片描述

    如果,将第二个文件中的static去
    运行程序会报错

    展开全文
  • C语言内部函数与外部函数

    千次阅读 2017-09-24 10:26:02
    内部函数与外部函数的区分标准是,该函数能否被其他源文件调用。
  • 内部函数和外部函数

    万次阅读 2017-07-11 23:46:25
    内部函数: 如果一个函数只能被本文件中其它函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static。...外部函数: 在定义函数时,如果在函数首部的最左端冠以关键字extern, 则表
  • 背景在处理数据的时候对于一些文本需要...shell函数先温习一下普通shell的写法[root@wmstianjin16172 ~]# vim funComm.sh #!/bin/bash #编写shell function输出结果可以使用变量进行接收,然后处理 function funComm()
  • 一、外部函数定义时默认) 在定义函数时,如果在函数首部的最左端冠以关键字extern,则表示此函数是外部函数,可供其他文件调用。 如果在定义函数时省略extern,则默认为外部函数。 但是,在调用外部函数时,声明...
  • 有可能是提示错误函数之前少了括号,导致在后面定义函数的被前面的函数包含进去导致错误!
  • C++内部函数和外部函数

    千次阅读 2017-02-07 15:03:53
    根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。 内部函数 如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static。函数首部的一般...
  • C++中在类外部定义的成员函数

    千次阅读 2020-10-14 10:22:21
    类的成员函数可以在类内部定义,也可以在类的外部定义。当定义在类的外部时,需要同时提供类名和函数名。 1 类外部定义成员函数 代码如下所示 classMyClass{ voidmyFunc(); inti; }; voidMyClass::myFunc() { ...
  • 外部变量和外部函数

    千次阅读 2011-08-25 20:29:41
    变量可以分为函数内部定义、使用的变量和函数外部定义的变量,通常情况下,把函数内部定义、使用的变量称为内部变量或局部变量,而将在函数外部定义的、供许多函数所使用的变量称为外部变量,一般情况下,也可以称为...
  • C语言中有关外部函数调用的问题

    万次阅读 多人点赞 2016-06-16 21:44:57
    首先指出一点,我们通常所说的编译器并非仅指编译器,确切来说是编译工具链,里面...而外部函数的声明(一般声明在头文件中)只是令程序顺利通过编译而已,此时并不需要搜索到外部函数的实体。 当然,外部函数实体...
  • C++调用外部函数和外部变量

    千次阅读 2018-04-03 22:37:26
    一个C++工程中,如果main.cpp需要调用在functions.cpp中定义函数,须在头文件common.h中加入函数的声明,在main.cpp和functions.cpp中都需要加入#include&lt;common.h&gt;如果需要多个文件共享的全局变量...
  • 外部函数的声明要注意

    千次阅读 2014-01-04 00:12:54
    外部函数的引用性声明一定要遵从原函数定义,尽管可能会通过编译,但实际使用并未遵从函数的本来意图,可能会导致意想不到的bug 函数调用的处理是在连接阶段进行的 实例分析:外部函数声明于外部文件 -----...
  • c++ 中类外部定义函数

    2009-12-23 11:42:23
    c++ 基础 类外定义函数 调用函数 基础
  • 内部函数和外部函数内部函数: 需加static声明,又称静态函数,只能在该文件中调用,在其他文件中不能被调用外部函数:1. 在定义函数时,若在函数首部的...C语言规定,定义函数时省略了extern 则隐含为外部函数,可被
  • 今天小编就为大家分享一篇layui use 定义js外部引用函数的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 最近在做有关工业相机的手眼标定的项目,在HALCON中导出了相机标定的C#格式代码,所用到的...但是在使用halcon外部函数,如disp_message()函数的时候发现,即便是我定义了两个句柄,并且将句柄作为参数传入到...
  • C语言的内部函数和外部函数用法

    千次阅读 2010-04-09 16:53:00
    内部函数和外部函数内部函数: 需加static声明,又称静态函数,只能在该文件中调用,在其他文件中不能被调用外部函数:1. 在定义函数时,若在函数首部的...C语言规定,定义函数时省略了extern 则隐含为外部函数,可被
  • 外部函数由extern定义,可以被其他源文件的函数调用。extern可以省略。 这样的分类可以让我们的代码更有可读性和模块化。 file1.c #include int main() { extern double cost(double dis, double time);//...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 584,356
精华内容 233,742
关键字:

外部函数怎么定义