Print

重复定义static

问:静态局部变量可重复定义吗
  1. 答:你的概念很有问题,什么变量都不可以重复定义。写在函数中的自动变量声明或定义,在进入这个函数时声明或定义,退出这个函数时自动撤消了,所以根本不存在“重复定义”的问题。第二个问题,用static修饰声明的变量不是自动变量,叫“静态变量”;这种变量在第一次调用这个函数时定义,每次调用生成的值保存到下次调用时使用……
    补充:局部静态变量的定义时刻,请参看风雷雪电对我的评论!
  2. 答:局部变量只在被调用的函数中被定义,从函数中返回时,就释放了。你不要被变量的名称迷惑了,虽然名字相同,但再一次定义时,又会存放在内存的不同地址中,不会混淆。你只当它们的名称不一样就行了。
    就像3班有个人叫张三,4班有个人也叫张三。3班的班主任和4班的班主任都不会把他们搞混的。
  3. 答:这个应该是可以的,不太了解的。
问:在一个文件中static定义了一个全局变量 又extern 了其他界面的该全局变量 出现重复定义?
  1. 答:不会,extern只是实现通知编译程序变量来自其他文件定义,并不是重定义。
问:c51中可不可以重复定义变量?
  1. 答:这样不会重复定义变量,static 是定义静态变量的,而静态变量是只会定义一次,它的生存期是整个源程序,也就是你这个s_int总是占据RAM里面的2字节空间,但是s_int是个局部静态变量,因此它的作用域也就是只在函数内部,其他地方不能改变它的值.
  2. 答:一般来讲这条语句绝对会出错,变量声明应该在主(子)函数的前面比如:
    #include <reg52.h>
    char i;//在这定义编译器才不会出错
    void main()
    {
    char j; //在这定义编译器才不会出错
    for(i=0;i<10;i++)
    {
    //char j; //在这定义编译器会出错
    }
    //char j;//在这定义编译器会出错
    }
  3. 答:static int s_int=1; 这一名,放到哪里都只会执行一次.

本文来源: https://www.lunwen66.cn/article/afc6f39770f7bc518c404f77.html