精华内容
下载资源
问答
  • 在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别是静态变量static。全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态...

    在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别是静态变量static。

    全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。

     而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。

    a9f4709212543c9f857f714c60101313.png

    扩展资料

    除明确标识出变量的生命周期外,将变量声明为static存储类还会根据变量属性不同而有一些特殊的作用:

    1、对于静态全局变量来说,针对某一源文件的以static声明的文件级变量与函数的作用域只限于文件内(只在文件内可见),也即“内部连接”,因而可以用来限定变量的作用域;

    2、对于静态局部变量来说,在函数内以static声明的变量虽然与自动局部变量的作用域相同(即作用域都只限于函数内),但存储空间是以静态分配而非默认的自动分配方式获取的,因而存储空间所在区域不同。

    一般来说,静态分配时存储空间于编译时在程序数据段分配,一次分配全程有效;而自动分配时存储空间则是于调用栈上分配,只在调用时分配与释放,且两次调用间变量值始终保持一致;必须注意,静态局部变量只能初始化一次,这是由编译器来保证实现。

    展开全文
  • Python全局变量在函数的使用方法 如下 图:要想函数修改局部变量age的值,需要修改之前加上global age语句,否则程序会认为函数是定义了一个新的age ...

    Python中全局变量在函数中的使用方法
    如下 图:要想在函数中修改局部变量age的值,需要在修改之前加上global age语句,否则程序会认为函数中是定义了一个新的age!
    在这里插入图片描述
    如下:在函数中使用变量age之前,先用global关键字声明,这样程序才会认为是在修改变量age的值,而不是定义一个局部变量
    在这里插入图片描述

    展开全文
  • 兵营类有一个类成员变量count、一个实例变量name和另一个实例变量selfCount。 count表示的是兵营已经创建士兵的总数;name表示的是每个兵营的名称;selfCount表示每个兵营已经创建的士兵数量。 创建3个兵营,通过...

    返回本章节

    返回作业目录


    需求说明:

    • 创建Dota游戏中的兵营类
    • 兵营类有一个类成员变量count、一个实例变量name和另一个实例变量selfCount。
    • count表示的是兵营已经创建士兵的总数;name表示的是每个兵营的名称;selfCount表示每个兵营已经创建的士兵数量。
    • 创建3个兵营,通过控制台为每个兵营定义兵营名称,并指定该兵营需要创建的士兵人数。
    • 在主方法中输出当前兵营中的总人数。

     

    实现思路:

    创建Dota游戏中的兵营类的实现思路如下:

    1. 创建兵营类Barracks。
    2. 定义int类型变量count,String类型变量name,int类型变量selfCount。
    3. 在Barracks类中定义operator()方法,该方法通过for循环创建3个Barracks对象,将从控制台接收到兵营名称和兵营已创建人数,分别保存至局部变量name和局部变量selfcount中,将这些局部变量保存的值分别赋值给实例变量name和实例变量selfCount,最后输出兵营目前一共创建的士兵数量。
    4. 创建一个测试类BarracksTest,在该类的main()方法中调用Barracks对象的operator()方法。

     

    实现代码:

    Barracks 兵营类

    import java.util.Scanner;
    
    public class Barracks {
    	static int count;//士兵的总数
    	String name;//兵营名字
    	int selfCount;//士兵数量
    	
    	public void operator() {
    		Scanner sc = new Scanner(System.in);
    		for (int i = 0; i < 3; i++) {
    			System.out.println("请输入第"+(i+1)+"个兵营名称:");
    			String name = sc.next();
    			System.out.println("请输入第"+(i+1)+"个军营的士兵数量:");
    			int selfCount = sc.nextInt();
    			this.count += selfCount;
    		}
    		System.out.println("士兵总数:"+count);
    	}
    	
    }

    test 类

    public class Test {
    	public static void main(String[] args) {
    		Barracks b = new Barracks();
    		b.operator();
    	}
    }

     

    展开全文
  • 朋友给的一个思路是程序里写一个静态类,里面只包含一个静态变量,主程序根据这个静态变量的值确定是否调用说明窗口,说明窗口也能button点击后修改静态变量的值。 但是我尝试后发现每次启动程序,这个...
  • C++中变量在内存位置说明

    千次阅读 2017-03-01 19:28:17
    今天,帮人看了一个问题,每次执行到函数 A 程序就挂了。 我看到代码函数 A 定义了一个超大体积的...这里所说的浪费空间指的是编译链接之后的文件比较小,是在程序没加载进内存之前的一个静态的大小,毕竟一
    今天,帮人看了一个问题,每次执行到函数 A 中程序就挂了。

    我看到代码中函数 A 中定义了一个超大体积的结构体变量,断定是爆栈了。

    这里回顾一下作下记录,C/C++程序中变量在内存中的位置:

    初始化为非0的静态变量、全局变量在数据段 .data区,编译出的文件需要记录其初始值,所以比较浪费空间。这里所说的浪费空间指的是编译链接之后的文件比较小,是在程序没加载进内存之前的一个静态的大小,毕竟一旦程序运行,对于32bit程序,每个进程可寻址的地址空间都为 2^32 == 4G.

    字符串字面量“hello world” 在只读数据段 .rodata.

    初始化非0 和 未初始化的静态变量和全局变量在 .bss 段(better for save space),编译出的文件中值包含符号,节省空间。

    简单的实验:

    int main(int argc, char *argv[])
    {
        return 0;
    }
    这只是主题代码,其他的忽略,debug 版本编译出的 exe 为  104KB.

    int g_arr[1000000] = {0};
    
    int main(int argc, char *argv[])
    {
        return 0;
    }

    增加大体积全局变量(这里不初始化 === 初始化为 0),编译出的 exe 为106KB,基本无变化。

    int g_arr[1000000] = {1};

    初始化为非 0 值,编译出的 exe 为 4012KB  .全局数组的大小为:1000000 * 4 / 1024 = 3906.25KB ,可以看到 exe 增加的体积毕本就是该全局变量的体积。

    定义静态类型。

    int main(int argc, char *argv[])
    {
        static int g_arr[1000000];
        return 0;
    }
    编译出的 exe 的大小为104KB,同样的,在exe 加载到内存里运行时,静态数组在自动被初始为0.

    int main(int argc, char *argv[])
    {
        static int g_arr[1000000] = {1};
        return 0;
    }
    初始化一下,编译出的 exe 的体积立马变大为4010KB,比定义为全局变量的稍微小一点点。

    另外栈和堆就不说。const 常量通常是编译器开洞,做一些常量折叠的手脚而已。char *p = "hello world".   "hello world"才是真实的存储于 .rodata 只读的。



    展开全文
  • 配置环境变量其实就像是创建一个快捷键一样,我们把安装程序的路径告诉系统环境变量,这样下次我们命令行就可以直接使用一个简单的命令来调用我们安装的程序,因为此时计算机已经知道我们的命令是什么意思,自动...
  • 比如图这么写报错 ,然后我删掉345行的static 程序就能跑起来了,静态变量的作用域是整个类,为什么我不能定义两组静态变量?,![图片说明]...
  • 在一个文件定义了变量和函数, 其他文件要使用它们, 可以有两种方式: 1.使用头文件,声明这些变量和函数,然后其他文件去包含头文件 2.其他文件直接extern。 程序设计风格: 1.不要把变量定义放...
  • [图片说明](https://img-ask.csdn.net/upload/201712/03/1512312941_498719.png) 上图是我调试的过程,首先断点之前程序运行的还算正常,我输入的是4(空格)9(空格),想要采集出4和9分别存在data[0]和data[1],...
  • 本例说明一个程序在运行的时候,各种变量所保存的位置。因为位置不同,自然,变量的生命周期也各不相同。 代码示例: #include <iostream>using namespace std;int nGNum1;void showStackAddress(){ ...
  • PATH环境变量原来Linux里面就有,你只需修改一下,使他指向JDK的bin目录,这样你控制台下面编译、执行程序时就不需要再键入大串路径了,路径搜索! CLASSPATH环境变量我放在最后面,是因为以后你出现的莫名其妙...
  • 程序变量

    2014-05-05 21:07:07
    在一个代码块内(或者是在一个函数头部作为参量)声明的变量,无论是否存在存储类修饰符auto,都属于自动存储变量。此类变量具有自动存储时期、代码块作用域和空链接。未经初始化,此类变量的值是不确定的。 2、 ...
  • 栈是一个内存数组,数组都是有大小和顺序的,栈存储的数据是后进先出。因为变量是存储的,自然按照后进先出的顺序进行。堆没有这些规定,可以随意的存储和移除,没有什么顺序。C#有垃圾收集器,能够自动...
  • 1:栈 - 有编译器自动分配释放 ,函数的形参也是栈区 2:堆 - 一般由程序员分配释放,系统不会管理这个区域,若程序员不释放,程序结束时可能由操作系统(os)回收 ...4:常量区,一个专门放常量的地方。 - 程序结束
  • C语言变量,按作用域范围可分为两种,即局部变量和全局变量。...它不属于哪一个函数,它属于一个程序文件。其作用域是整个源程序。C语言根据变量的生存周期来划分,可以分为静态存储方式和...
  •  变量的初始化是指变量在被说明的同时赋给一个初值。Freescale外部变量 和静态全程变量在程序开始处被初始化, 局部变量包括静态局部变量是在进入定义 它们的函数或复合语句时才作初始化。所有全程变量在没有...
  • 以QQ为例进行说明 ...3.QQ将密码信息发给服务器后,也得将账户信息自己存在内存,这时内存就会有块单独的空间是QQ的,QQ账号和QQ密码就像空间挖了两坑,这坑就相当于开辟的变量...
  • 现有 3 个线程代表 3 只猴子,对类一个整型变量 count(代表花的总数,共 20 朵花)进行操作。该变量代表花的总数,不同猴子(线程)每采摘一次,花的总数少 1,直至所有花被不同的猴子采摘完,程序结束 实现...
  • 一个功能如下图的程序:![图片说明](https://img-ask.csdn.net/upload/201511/23/1448269601_453008.png) 由于这个程序要能循环执行,这导致了一个问题: 第一次循环,我选择功能1,即创建一个表(比如int...
  • 这些说明符和限定符决定了变量保留内存的时间(存储的持续性)和程序的那部分可以使用它们(作用域和链接性) auto:自动类型推断 register:说明变量的使用频率比较高,变量采用寄存器存储, static:...
  • 1.全局变量前加static,全局变量就被定义成为一个全局静态变量(全局变量和静态全局变量的生命周期是一样的,都是的静态区,整个工程执行期间内一直存在) 特点如下: 1)存储区:静态存储区没变(静态...
  • 用C语言编写程序的时候,我们经常会遇到这样一种情况:希望头文件定义一个全局变量,然后包含到两个不同的c文件,希望这个全局变量两个文件中共用。 举例说明:项目文件夹project下有main.c、common.c和...
  • 平常的子函数调用,会分配一个栈给函数的变量,当这个子函数结束调用的时候,这块栈就会释放。 而使用static变量,那么该变量就会存储一块静态变量区,子函数结束调用的时候,仍然可以调用静态变量,它的值不会...
  • 大家类比一下现实生活中,比如去超市买东西,往往咱们需要一个菜篮子,用来进行存储物品,等到所有的物品都购买完成后,在收银台进行结账即可如果在程序中,需要把2个数据,或者多个数据进行求和的话,那么就需要把...
  • 首先看int的默认值和char的默认值类型分别为0和'\u0000'。...输出和分析的一样,说明程序没有问题。 下面附上代码:   class Person{  public int i;  public char j; }  public class Test{  p...
  • C++ 存储类存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置它们所修饰的类型之前。下面列出 C++ 程序中可用的存储类:autoregisterstaticexternmutableauto 存储类auto 存储类是所有局部...
  • C#静态变量用法简要说明

    千次阅读 2010-10-27 12:54:00
    近来书本里面经常用到静态变量和静态方法,很多同学感觉迷糊,这里对其做一个简单说明。 首先,静态变量和私有变量的最主要的区别就在于:他们分配内存空间的方式不一样。 静态变量的内存是在程序开始执时变量就...
  • 控制台随机输入一个小于100的整数,将该整数值赋于变量output,作为英雄的初始血量。main方法循环调用英雄的battle0方法,如果英雄的血量已经小于或者等于零,则停止循环,系统给出友好提示信息,英雄已经牺牲...
  • 1.静态变量在C#程序中,没有全局变量的概念,这意味着所有的成员变量只有该类的实例才能操作这些数据,这起到了“信息隐藏”的作用。但有些时候,这样做却不是个明智的选择。假设我们要定义一个图书类,要求该类能...
  • 用C语言编写程序的时候,我们经常会遇到这样一种情况:希望头文件定义一个全局变量,然后包含到两个不同的c文件,希望这个全局变量两个文件中共用。举例说明:项目文件夹project下有main.c、common.c和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,274
精华内容 1,709
关键字:

在程序中说明一个变量