精华内容
下载资源
问答
  • static局部变量

    2016-11-27 17:35:30
    static局部变量

            假设一个函数中有多个变量,当这个函数调用结束后,里面的变量也会消失,再次调用该函数时上一次调用的变量值不会保存, 如果想要保存上一次调用的变量值, 定义变量的时static  int  a=10;变量a的作用域没有改变,存储位置变化到了静态存储区,和全局变量在一个地方,持续时间也是和全局变量一样一直存在。

    展开全文
  • 普通局部变量和static局部变量: 1、 ① static局部变量在编译阶段就已经分配内存空间了,也就是函数没有调用前它就已经存在了。 ② 普通局部变量只有运行到定义该变量的时候才会分配内存空间。 2、 ① 当执行完...

    普通局部变量和static局部变量:


    1、
    ① static局部变量在编译阶段就已经分配内存空间了,也就是函数没有调用前它就已经存在了。
    ② 普通局部变量只有运行到定义该变量的时候才会分配内存空间。
     

    2、
    ① 当执行完定义该static局部变量的函数体后,该static变量的内存空间不会被释放,只有程序结束时static变量才会自动释放。
    ② 当执行完定义该普通局部变量的函数体后,该普通局部变量的内存空间就会被释放。
     

    3、
    ① 如果static局部变量不初始化,那么它默认为0。
    ② 如果普通局部变量不初始化,那么它的值为随机数。
     

    4、
    ① static局部变量的初始化语句只会执行一次,下次再运行该初始化语句就不会被初始化,但是它可以被多次赋值。
    ② 每次运行该普通局部变量的定义时该变量都会被初始化。
     

    5、static变量是存放在Data区的,该区只有程序结束时才会被释放。

    为什么static变量只能被常量赋值,而不能被变量赋值?
    例如:
    int a = 10;
    static int b = a;
    这样会报错,变量不能给static变量赋值,因为static变量是存放在Data区,它在程序编译阶段就在Data区了,但是普通变量只有在程序运行到初始化的时候才会被分配内存空间,所以static变量在编译阶段被没有初始化分配内存空间的普通变量赋值是错误的,只能用常量赋值。

     


    普通全局变量:


    1、在函数外面定义的变量为全局变量,任何地方都可以使用全局变量。

    2、在使用全局变量时,如果在前面找不到该全局变量的定义,必须在前面进行声明才可以使用该全局变量,使用extern声明,而且extern声明只针对全局变量,不能使用在局部变量。

    3、如果全局变量不初始化,那么默认赋值为0。

    4、全局变量只能定义一次,但可以声明多次。

    5、全局变量在编译阶段已经分配了内存空间,即函数没有执行前,只有在整个程序结束后才会自动释放内存空间(和static变量类似)。

    6、普通全局变量的定义和声明:
    ① 定义一个全局变量并初始化:
    int num = 100;
    ② 如果要声明一个全局变量,需要加extern:
    extern int num;

     


    static全局变量:


    1、static全局变量和普通全局变量的区别就在于文件作用域的不同,static全局变量只能在定义的文件内使用,其它文件是不能使用的,而普通全局变量在所有文件都能使用,前提是需要声明。

    2、extern关键字只适用于普通全局变量,不能跟static一起使用。

    3、不同文件定义的static全局变量即使名字一样,也是不会有影响的,因为它们是没有关系的。

    展开全文
  • 全局变量、static 全局变量、局部变量的理解(带实例)全局变量static全局变量局部变量static局部变量代码输出结果参考 全局变量 在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个...

    全局变量、static 全局变量、局部变量的理解(带实例)

    全局变量

    在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件,包括 .c 、.cpp、.h 文件。当一个cpp文件需要使用另一个cpp文件定义的全局变量,通过用extern声明,就可以从“声明”处起,合法地使用全局变量
    全局变量全部存储在静态存储区。在程序开始执行过程中给全局变量分配空间,程序执行完毕就释放空间。程序执行过程中固定的分配空间,而不需要动态进行分配是释放。

    static全局变量

    全局变量前加static的作用是现在全局变量的作用范围,使该全局变量只在定义全局变量的源cpp文件中有效,其他源文件不能通过extern声明使用。

    局部变量

    定义在函数体、块作用域、内部的变量,作用域仅限于函数体内部、块作用域里,离开函数体、块作用域就会无效。局部变量与全局变量同名时,在该函数体内、块作用域里只会使用局部变量,自动隐藏全局变量。
    程序在运行期间为局部变量动态地分配存储空间

    static局部变量

    静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在编译时赋初值,即只赋初值一次。在程序整个运行期间都不释放

    代码

    extern_1.h:

    static int st1 = 0;//所有包含h的头文件可以被其他文件通过extern引用
    

    extern_1.cpp:

    #include<stdio.h>
    #include"extern_1.h"
    
    int test = 1;//全局变量,可以被其他.c、.cpp、.h文件通过extern引用
    
    static int st2 = 0;//不!!可以被其他文件通过extern引用,static修\
    				   饰的全局变量只在该extern_1.cpp文件有效,其他文件无效。
    

    extern_2.cpp:

    extern int test;
    
    int test_static()
    {
    	return test + 1;
    }
    
    

    main.cpp:

    #include<stdio.h>
    #include"extern_1.h"
    #include<Windows.h>
    
    extern int test;
    
    //s1已经自然包含,因s1是定义在头文件中,通过#include"extern_1.h"已经包含
    
    //extern int st2;
    
    int f(void);
    
    int main(int argc, char const *argv[])
    {
    	//例1------------
    	//int test = 100;//新定义了一个局部变量,与全局变量同名,main函数里将覆盖全局变量,但是test并没作为参数传给f(),所以f()访问的还是全局变量
    	//printf("local test=%d\n", test);//
    
    	例2------------
    	test = 100;//更改全局变量的值
    	printf("local test=%d\n", test);//
    
    	f();
    	f();
    	f();
    	system("pause");
    }
    
    int f(void)
    {
    	static int all = 1;//static 局部变量
    	printf("all=%d\n", all);
    	all += 2;
    	printf("agn all=%d\n", all);
    
    	test++;//全局变量
    	printf("internal test=%d\n", test);
    
    	st1++;//s1为static全局变量,已经自然包含,因s1是定义在头文件中,通过#include"extern_1.h"已经包含
    	printf("static int st1=%d\n", st1);
    
    	return all;
    }
    

    输出结果

    main函数里给了2个例子,注释掉例2,运行例1,结果输出如下:
    在这里插入图片描述
    main函数里注释掉例1,运行例2,结果输出如下:
    在这里插入图片描述
    注意,main函数里局部变量test与全局变量同名的输出有差异,static int st2在extern_2.cpp中不可见

    参考

    https://blog.csdn.net/u013355826/article/details/53224303/

    展开全文
  • 普通局部变量与static局部变量的区别 内存分配和释放 1、普通局部变量只有执行到变量定义的语句的时候才分配空间。 2、static局部变量在编译阶段(函数还没有执行),变量的空间已经分配。 3、普通局部变量离开作用...

    普通局部变量与static局部变量的区别

    内存分配和释放

    1、普通局部变量只有执行到变量定义的语句的时候才分配空间。

    2、static局部变量在编译阶段(函数还没有执行),变量的空间已经分配。

    3、普通局部变量离开作用域{},自动释放其空间,也就无法使用此变量。

    4、static局部变量只有在整个程序结束的时候才将其自动释放。

    初始化

    1、普通局部变量不初始化,为随机值。

    2、static局部变量不初始化,为0。

    3、static局部变量初始化语句只有第一次执行时有效,但是可以赋值多次。

    4、static局部变量只能用它常量初始化。

    展开全文
  • static局部变量和普通局部变量区别?static函数和普通函数区别 原创Isanti2015 最后发布于2017-08-21 20:05:50 阅读数 1288 收藏 展开 几者的区别从三个方面考虑: 1初始化时间 2 作用域 3 分配内存空间 static...
  • 普通局部变量 普通局部变量遵循----------------就近原则 static局部变量 第八条注意解释 两者区别 转载于:https://www.cnblogs.com/lzy-1023/p/9379156.html...
  • static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 面对突如其来的三联问,真的一口老血喷出来,快收回去,这个很好理解 1、static全局变量与普通的全局变量有什么区别? 存储方式: 两...
  • static局部变量与普通局部变量有什么区别?总结static 的用法! 答:全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在...
  • static 局部变量和普通局部变量有什么区别?static 函数与普通函数有什么区别? 答案:全局变量( 外部变量) 的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也...
  • static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是...
  • C/C++ static全局变量和static局部变量

    千次阅读 2015-04-02 09:42:51
    1.static全局变量不能被其他源文件通过extern进行引用访问。 2.static局部变量的值在函数执行完毕,仍然可以保留下来。
  • int main0()//局部变量 { int i,j;//这里的 i,j两个都是局部变量 for (int k=0;k<5;k++)//这里的 k也是局部变量,一旦for循环结束,k自动释放 { printf("%d \n",10); } return 0; } void fun()//静态...
  • 2.static局部变量只被初始化一次,下一次依据上一次结果值; 3.static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝 C语言中讲讲static变量和static函数有什么作用 static关键字有两种意思,你看上...
  • static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是...
  • static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答:1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态...
  • static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是...
  • 菜鸟在线C编译器:1)或2)  1. http://www.compileonline.com/compile_c_online.php  2....amp;type=c ...1.static全局变量只初使化一次,防止在其他文件单元中被引用;...2.static局部变量只被...
  • 2.static局部变量只被初始化一次,下一次依据上一次结果值; 3.static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝 C语言中讲讲static变量和static函数有什么作用static关键字有两种意思,你看上...
  • 一、普通全局变量和普通局部变量的关系 通常情况下,如果有两个同名变量,一个是普通全局变量,另一个是普通局部变量,那么局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。 #include #include int ...
  • 在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:变量的声明有两种情况:(1) 一种是需要建立...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,333
精华内容 6,133
关键字:

static局部变量