• c语言中的文件作用域、函数原型声明、定义声明和非定义声明


    c语言中的文件作用域。

    1、c语言中的文件作用域

    #include <stdio.h>
    
    #define NUMBER 5   ## 对象式宏
    
    int v[NUMBER];    ## 在函数外声明的变量,文件作用域,定义声明
    
    int func1(void);   ## 因为func1函数是在main函数之后创建的,因此需要函数原型声明
    
    int main(void)
    {
        extern int v[];   ## 非定义声明,可省略
        int i;
        puts("please input the scores."); 
        for (i = 0; i < NUMBER; i++)
        {
            printf("v[%d] = ", i); scanf("%d", &v[i]);
        }
        printf("the max : %d\n", func1());
        return 0;
    }
    
    int func1(void)
    {
        extern int v[];   ## 非定义声明,可省略
        int i, max = v[0];
        for (i = 0; i < NUMBER; i++)
        {
            if (v[i] > max)
                max = v[i];
        }
        return max;
    }

    在程序的程序块中声明的变量的作用域是块作用域。 而像数组v这样,是在函数外声明的,其名称从声明的地方开始,到该程序的结尾都是通用的,这样的作用域称为文件作用域。

    编译器在读取数据时,是按照从头到尾的顺序读取的,因为func1函数定义在main函数之后,所有要想在main函数中调用top函数,需要提前声明funca1函数,像这样明确描述了函数的返回类型,以及形参的类型和个数等的声明称为

    函数原型声明。如果把函数func1放在main函数之前,就不需要函数原型声明了。

    func1原型声明:非定义声明

    func1函数:定义声明。

  • 相关阅读:
    OnGUI 音频
    Java 8 的一些新特性
    获取文件编码格式
    js 常用 正则
    C#中这个算是什么
    数据的批量增加
    Ehcache的配置(自学,有问题请指出)
    Linux 下配置和使用java、Tomcat
    StringBuffer和StringBuildr的区别
    Oracle中复制一张表的结构,用sql语句复制一张表结构
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/14594723.html
Copyright © 2020-2023  润新知