• 作用域


    
    
    //变量的定义,赋值,初始化的区别:
    #include <stdio.h>
    main(){
    int a;//此为变量的定义
    a = 3;//此为变量的赋值
    int b=3;//此为通常说的变量的定义并初始化
    int c;
    printf ("%d",c);//事实上,如果变量在定义的时候没有初始化,一般情况下变量会被c编译器自动初始化为0
    }

    2.作用域:

    //1
    #include <stdio.h>
    void b(int c,int d){
    int c;
    int d=3;
    printf ("%d %d",c,d);
    }
    void main(void){
    b(4,5);
    }
    /*以上代码,函数体内的c和d均是语法错误,
    报错原因都是重复定义。
    我们在定义函数的时候,括号内的形参已经被
    定义为函数b的局部变量了,就不能在函数体内的最外层再次定义了*/
    
    /*下面是正确的写法*/
    #include <stdio.h>
    void b(int c,int d){
    d=3;
    printf ("%d %d",c,d);
    }
    void main(void){
    b(4,5);//将打印4,3
    }

     3.

    #include <stdio.h>
    
    void main (void){
    int a;
    float a;//报错,变量a类型冲突,不同于Python,一旦变量a类型定义了就不能更改
    }

     4 定义在程序文件最外层的声明以及定义:

    /*在程序文件最外层,如果是形如 int a;或者 static int b;这就是声明
    声明的目的就是来声明变量
    到底是全局变量还是被static修饰的静态变量,
    int a;这样的形式,则声明int变量a为全局变量
    static int b;这样的形式,则声明int变量b为静态变量,static表示任何其他程序文件都无法获取到这个变量在源程序文件中的值,同时对该变量的更改也将不影响原程序文件
    同一声明在程序文件中可以出现多次,即 int a; int a; int a;//这样是没有语法错误的。 但是,像以下这样的代码 int a; static int a;//这就报错了,第一句话已经说明int a是全局变量,而第二句话又说是static变量,显然前后矛盾了 而在程序文件最外层,形如这样的 int a=2;或者static int b = 3, 这就是声明并定义了,因为变量不能重复定义,所以以下代码会报错: static int a = 2; static int a = 3; 同一声明可以出现多次,所以,以下代码是合法的: static int a; static int a=2; 声明前后矛盾同样会报错,所以以下也是非法的: int a; static int a =3;//
    */ #include <stdio.h> int a; int a;//合法 int b; static int b;//非法int d=3; int d = 3;//非法 int f; int f=2;//合法 void func1(void); static void func2(void); void main(void){ int i; int i;//报错,这里要特别注意了,不同于原文件最外层,这样的形式在函数体内都是定义,这里显然重复定义了 } static void func1(void){ printf ("func1"); } //报错,前面已经声明了func1是全局函数,这里定义 //的时候却说是static函数,这就矛盾了 void func2(void){ printf ("func2"); }//不报错,func2仍然是static函数,注意如果换成变量的话就会报错
  • 相关阅读:
    Java学习之路
    ofo开锁共享平台
    Texstudio
    我的母亲 (老舍)
    Excel数据透视表
    Excel分类汇总与数据有效性
    Tomcat源码分析
    证明:在任意六人的聚会中,要么有三人曾经认识,要么有三人不曾认识
    琅琊榜读书笔记
    选择排序可视化
  • 原文地址:https://www.cnblogs.com/saolv/p/9609734.html
Copyright © 2020-2023  润新知