zoukankan      html  css  js  c++  java
  • 函数的声明

    C语言代码由上到下依次执行,原则上函数定义要出现在函数调用之前,否则就会报错。但在实际开发中,经常会在函数定义之前使用它们,这个时候就需要提前声明。

    所谓声明(Declaration),就是告诉编译器我要使用这个函数,你现在没有找到它的定义不要紧,请不要报错,稍后我会把定义补上。

    函数声明的格式非常简单,相当于去掉函数定义中的函数体再加上分号;,如下所示:

    返回值类型  函数名( 类型 形参, 类型 形参… );

    也可以不写形参,只写数据类型:

    返回值类型  函数名( 类型, 类型…);

    函数声明给出了函数名、返回值类型、参数列表(参数类型)等与该函数有关的信息,称为函数原型(Function Prototype)。

    函数原型的作用是告诉编译器与该函数有关的信息,让编译器知道函数的存在,以及存在的形式,即使函数暂时没有定义,编译器也知道如何使用它。

    有了函数声明,函数定义就可以出现在任何地方了,甚至是其他文件、静态链接库、动态链接库等。

    上节给出了计算sum = 1! + 2! + 3! + ... + (n-1)! + n!的代码,这节我们稍作修改,将 factorial() 和 sum() 函数的定义放到 main() 函数后面,请看下面的代码:

    1. #include <stdio.h>
    2. // 函数声明
    3. long factorial(int n); //也可以写作 long factorial(int);
    4. long sum(long n); //也可以写作 long sum(long);
    5. int main(){
    6. printf("1!+2!+...+9!+10! = %ld ", sum(10));
    7. return 0;
    8. }
    9. //求阶乘
    10. long factorial(int n){
    11. int i;
    12. long result=1;
    13. for(i=1; i<=n; i++){
    14. result *= i;
    15. }
    16. return result;
    17. }
    18. // 求累加的和
    19. long sum(long n){
    20. int i;
    21. long result = 0;
    22. for(i=1; i<=n; i++){
    23. //嵌套调用
    24. result += factorial(i);
    25. }
    26. return result;
    27. }

    运行结果:
    1!+2!+...+9!+10! = 4037913

    我们知道,使用 printf()、puts()、scanf()、getchar() 等函数要引入 stdio.h 这个头文件,很多初学者认为 stdio.h 中包含了函数定义(也就是函数体),只要有了头文件程序就能运行。其实不然,头文件中包含的都是函数声明,而不是函数定义,函数定义都在系统库中,只有头文件没有系统库在链接时就会报错,程序根本不能运行。

    最后再补充一点,函数原型给出了使用该函数的所有细节,当我们不知道如何使用某个函数时,需要查找的是它的原型,而不是它的定义,我们往往不关心它的实现。

  • 相关阅读:
    Python下划线简介
    OneHot编码
    搜狗新闻原始数据处理
    2. mirth connect探索------------ cs模式客户端登录
    System.Net.WebException: 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。 ---> System.Security.Authentication.AuthenticationException: 根据验证过程,远程证书无效。
    python学习历程-安装篇(一)
    Python学习笔记(一)
    使用dva 搭建ant design mobile项目
    [error] OpenEvent("Global gx_stop_25184") failed (2: The system cannot find the file specified)
    nginx 上部署 react 项目
  • 原文地址:https://www.cnblogs.com/zhugeanran/p/8998444.html
Copyright © 2011-2022 走看看