精华内容
下载资源
问答
  • 用static定义静态局部变量求阶乘

    千次阅读 2012-11-27 16:14:49
    1. /* 2. * Copyright (c) ... 3. * All rights reserved.... 4. * 作 者:吕建 5. * 完成日期:2012 年 11 月27 日 ... 6. * 版 本 号:v1.0 ... 8. * 问题描述:用static定义静态局部变量求阶乘 9. * 程序输出:略
    1.	/*  
    	2.	* Copyright (c) 2012, 烟台大学计算机学院  
    	3.	* All rights reserved.  
    	4.	* 作    者:吕建
    	5.	* 完成日期:2012 年 11 月27  日
    	6.	* 版 本 号:v1.0
    	7.	* 输入描述:无
    	8.	* 问题描述:用static定义静态局部变量求阶乘
    	9.	* 程序输出:略
    	10.	* 问题分析:略
    	11.	* 算法设计:略
    	
    	  #include <iostream>
    	  using namespace std;
    	  int fac(int);
    	  int main()
    	  {int i;
    	  for(i=1;i<=5;i++)
    	  cout<<i<<"!="<<fac(i)<<endl;
    	  return 0;
    	  }
    	  int fac(int n)
    	  {
    	  static int f=1;
    	  f=f*n;
    	  return f;
    	  }
    	  
    		
    

    展开全文
  • 局部变量:  一种动态存储方式,在作用域内定义时创建,到作用域结束时销毁。  定义局部变量时若未初始化... 定义静态局部变量是若未初始化,对内置类型来说,初始化为0  注意:静态局部变量的生存期(life

    局部变量:

          一种动态存储方式,在作用域内定义时创建,到作用域结束时销毁。

          定义局部变量时若未初始化,对内置类型来说,其值是为定义的。

    静态局部变量:

          一种静态存储方式,在作用域内定义时创建,到程序结束时销毁。

          定义静态局部变量是若未初始化,对内置类型来说,初始化为0

          注意:静态局部变量的生存期(lifetime)是从定义开始到程序运行结束,但其作用域并未发生变化,下次调用该静态局部变量时其值仍然存在

    全局变量:

           静态存储方式,生存期到程序运行结束。

           全局变量对整个程序时可见的,例如,在一个工程中有多个文件:1.cpp 2.cpp 3.cpp,int x是在1.cpp中定义的全局变量,该变量在整个工程中是可见的,在其他文件中要想调用x,需要extern int x;进行声明,否则    发生错误。

    静态全局变量:

            静态存储方式。

            相对于全局变量来说,静态全局变量的作用域仅在定义该变量的文件中,在其他文件中不能使用。就上例而言,x只能在定义它的1.cpp中调用。

     

    由此可见,同样是静态变量,静态局部变量与静态全局变量的改变效果是不同,静态局部变量相对于局部变量改变了生存期,而作用域未发生变化;静态全局变量相对于全局变量改变了作用域,而生存期未发生变化。

    展开全文
  • 如果定义成局部变量,则必须定义静态局部变量静态局部变量是在编译时赋初值的,只赋初值一次,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。
  • 若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度; C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题,因为他们都放在静态...

    A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;

    B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;

    C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题,因为他们都放在静态数据存储区,全局可见;

    D.如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的的函数)

    E.函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。


    时间(生命周期)——>在内存空间分配上

    空间(作用域) ——>在作用范围上

    展开全文
  • 全局变量、局部变量、静态全局变量、静态局部变量的区别
  • 变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量...静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存, 函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回 后...
    变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。  
    
      按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态 
    存储区域,局部变量存放在内存的栈区。  
     按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的 
    文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存, 
    函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回 
    后失效。  
    全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局 
    变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在 
    存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程 
    序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都 
    是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内 
    有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域 
    局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源 
    文件中引起错误。  
        从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方 
    式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限 

    制了它的使用范围。  


      static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用 
    的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定 
    义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这 
    些函数的源文件要包含这个头文件  


      static全局变量与普通的全局变量有什么区别:static全局变量只初使化一 
    次,防止在其他文件单元中被引用;  
      static局部变量和普通局部变量有什么区别:static局部变量只被初始化一 
    次,下一次依据上一次结果值;  
      static函数与普通函数有什么区别:static函数在内存中只有一份,普通函 
    数在每个被调用中维持一份拷贝  
      全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量 
    的值不可知。  

    展开全文
  • 关于静态局部变量与静态外部变量

    千次阅读 2017-11-09 19:14:10
    1:静态局部变量存储在静态存储区,如果赋有初值,函数调用期间只赋值一次,下次调用该函数时,静态局部变量值为上次调用之后的结果,原因:静态局部变量在函数调用期间是不释放的;而自动变量在每次调用函数时都会...
  • 静态局部变量

    2014-10-16 10:33:09
    静态局部变量 在局部变量前加上“static”关键字,就成了静态局部变量静态局部变量存放在内存的全局数据区。函数结束时,静态局部变量...静态局部变量与全局变量共享全局数据区,但静态局部变量只在定义它的函数中可
  • 静态局部变量保存在全局数据区,而不是保存在栈中,每次的值保持到下一次调用,直到下次赋新值。该变量在全局数据区内分配内存;静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行...
  • 变量可以分为全局变量、静态全局变量、静态局部变量和局部变量 按...静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。
  • 3、静态局部变量只在定义它的函数内有效,且程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。 4、全局变量和静态变量如果没有手工初始化,则由编译...
  • C++ 全局变量、局部变量、静态全局变量、静态局部变量的区别 C++ 变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为 6 种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和...
  • 全局变量局部变量静态全局变量、静态局部变量的区别   转自:http://hi.baidu.com/sindana/blog/item/06fe68171e364401c93d6ded.html 标签:全局变量 局部变量 静态全局变量 静态局部变量 ...
  • 整理表格如下:分类 全局变量 静态全局变量(static) 局部变量(auto) 静态局部变量(static) 作用域 全局作用域(extern) 文件作用域(当前文件) 局部作用域(定义的位置到函数结束) 局部作用域(定义的位置到函数结束) ...
  • 1. static 变量  静态变量的类型 说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态 存储方式,但...(1)静态局部变量在函数内定义 它
  • 概念首先得明白局部变量,静态局部变量,全局变量,静态全局变量这几个概念,以下面程序举例://main.cpp int a = 0; //全局变量 static int b=0;//静态全局变量 main() { int c; //局部变量 static int d;//静态...
  • 静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。...
  • Tables 作用域 存储方式 生命周期 初始化 java C/C++ 全局变量(外部变量) 整个工程文件内 内存的静态存储区域 ... 静态全局变量 定义它的文件内 内存的静态存储区域 整个源程序 0 类里声
  • 静态变量 静态变量的类型说明符是static,静态变量属于静态存储方式,但属于静态存储方式的不一定是静态变量,如外部变量(全局变量)就属于静态存储方式,但不是静态变量。...对于自动变量(局部变量
  • 静态局部变量静态局部变量

    千次阅读 2013-06-24 14:04:27
    是某函数中的局部变量,那么这个变量只被初始化赋值为0一次, 当这个函数被多次调用时,除第一次被调用时 m 的内容被初始化为0外, 以后每次调用时,m 都会在上一次函数被调用时产生结果的基础上继续运行的。 例如 ...
  • 而普通(非静态)局部变量和静态局部变量的作用域为:从定义处到包含该变量定义的块的结束处。初始化:形参由调用函数时所传递的实参初始化;而普通(非静态)局部变量和静态局部变量通常用初始化
  •   基本概念: 作用域:起作用的区域,也就是可以工作的范围。 代码块:所谓代码块,就是用{}括起来的一段代码。... 普通的局部变量定义的时候直接定义或者在前面加上auto void func1(void){&nbs...
  • 静态局部变量和静态全程变量static。

    万次阅读 多人点赞 2019-01-01 13:28:04
    我们知道在函数内部定义变量,当程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何...
  • 全局变量局部变量静态全局变量、静态局部变量的区别转自:http://hi.baidu.com/sindana/blog/item/06fe68171e364401c93d6ded.html 标签:全局变量 局部变量 静态全局变量 静态局部变量 it ...
  • 静态局部变量定义时赋初值问题和定义后赋初值问题 如 1 . static int a=1; 2 . static int a; a=1; 函数中静态局部变量a赋初值,采用上述两种方式时不一样,采用方式1时a是上次结束时的值,采用2方式时a=1还是...
  • 静态局部变量特点

    千次阅读 2016-06-26 22:07:15
    静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化; 静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0; 它始终驻留在全局数据区,直到程序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 252,454
精华内容 100,981
关键字:

定义静态局部变量