变量

C语言讲义——变量(variable)

让人想犯罪 __ 提交于 2020-03-30 17:20:27
变量(variable) 变量用于存放数据 变量是供程序操作的存储区的名字 变量有类型,该类型决定了变量占用内存的大小 字节→ C语言有以下6种简单变量类型: 类型细分: 变量在内存中需要占据空间,内存占用情况如下图所示:一个int变量占4字节空间(有的电脑上可能占2字节),一个double变量占8字节空间。 说明: char = 1Byte short ≥ 2Byte long ≥ 4Byte long ≥ int ≥ short 此外还有一些复合类型,比如enum(枚举)、struct(结构体)、union(联合)。这些类型都是值类型(传参数时默认都是值传递) 求变量的size: printf("short :%d\n",sizeof(short)); printf("unsigned short:%d\n",sizeof(unsigned short)); printf("整形:%d\n", sizeof(int)); printf("长整形:%d\n", sizeof(long)); printf("浮点:%d\n", sizeof(float)); printf("double :%d\n", sizeof(double)); printf("long double :%d\n", sizeof(long double)); 结果: short :2 unsigned

C++_系列自学课程_第_8_课_指针和引用_《C++ Primer 第四版》

偶尔善良 提交于 2020-03-30 17:15:54
   C语言最富有迷幻色彩的部分当属指针部分,无论是指针的定义还是指针的意义都可算是C语言中最复杂的内容。指针不但提供给了程序员直接操作硬件部分的操作接口,还提供给了程序员更多灵活的用法。C++继承这一高效的机制,同时引入了另一个与指针相似但 不相同的机制: 引用。 一、引用   简单的来说,引用就是变量的别名(alias), 通过别名我们可以操作引用代表的变量。 定义一个引用的语法如下所示:     变量类型 &引用标识符 = 变量名。 Exp:   int iVar=10;   int &iRef = iVar;   iRef = 20 ;   cout<<iVar<<endl;   这段程序执行的结果就是输出: 20 ;   程序通过引用 iRef 改变了变量iVar的值。 要点:   1、在定义引用的同事必须初始化,指出引用代表的是哪一个变量,而且这种“指向关系”不能改变。   2、引用只是对象的另一个名字,可以通过对象的原标识符访问对象,也可以通过对象的引用访问对象。   3、在一个语句定义多个引用的时候,每个引用标识符(引用名)的前面必须都加上&符号,否则就是错误。 1、const引用   const引用是指向const对象的引用, 不能通过const引用改变原对象的值。如下所示: 1 #include <iostream> 2 #include <string> 3

Java环境变量配置

落爺英雄遲暮 提交于 2020-03-30 17:15:30
> Windows环境 安装好JDK后,开始设置Java的环境变量: PS:本人的JDK的版本是jdk1.5.0_05,WinXP系统 对于WinXP或Win2000: 用鼠标右击“我的电脑”->属性->高级->环境变量 系统变量->新建->变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.5.0_05 系统变量->编辑->变量名:Path 在变量值的最前面加上:%JAVA_HOME%\bin;(若已经有Path项,无须另外新建,直接在后 面加,但需用;与前面已有的项分隔开) 系统变量->新建->变量名:CLASSPATH 变量值: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 若为做MSSQL数据库开发而安装了Microsoft SQL Server 2000 Driver for JDBC的话, 还需将msutil.jar,mssqlserver.jar,msbase.jar 3个文件加到CLASSPATH里 若装了Ant工具,还需新建一个ANT_HOME项 变量值为相应目录, 我的Ant安装目录为E:\Program Files\apache-ant-1.7.0 并且将%Ant_HOME%\bin加入Path项 以下是我的Java环境变量设置

C++ Primer Summary 02

孤人 提交于 2020-03-30 16:12:29
标识符:变量名,即变量的标识符;C++中的标识符都是大小写敏感的。 初始化:复制初始化和直接初始化。直接初始化效率更高。 初始化不是赋值:初始化既创建变量又赋初始值,赋值则是擦除对象的当前值并用新值代替。 系统有时候会帮我们初始化变量,系统提供什么样的值取决于变量的类型以及定义的位置。 未初始化的变量引起运行问题:可能会导致程序错误执行和/或错误计算,问题出在未初始化的变量事实上都有一个值,编译器指定变量的内存地址,该地址原有数值依然存在。建议每个内置类型的对象都要初始化。 声明和定义:声明用于向程序表明变量的类型和名字。定义也是声明。但声明不是定义。可以使用extern声明变量。 extern int i;//declares but not define i int i;//declares and define i extern double i = 0;//definition C++语言中,变量必须且仅能定义一次。 变量名相同,在局部作用域中局部变量会屏蔽全局变量。 函数外部的名字具有全局作用域。类作用域、命名空间作用域、语句作用域、局部作用域。 const限定符把一个对象转换成一个常量,定义const对象时必须初始化。 const对象默认为文件的局部变量。与其他变量不同,除非特别说明,在全局作用域声明的const变量是定义该对象的文件的局部变量。此变量只存在于那个文件钟

雷林鹏分享:Java 变量类型

故事扮演 提交于 2020-03-30 15:04:58
  在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:   type identifier [ = value][, identifier [= value] ...] ;   格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。   以下列出了一些变量的声明实例。注意有些包含了初始化过程。   int a, b, c; // 声明三个int型整数:a、 b、c。   int d = 3, e, f = 5; // d声明三个整数并赋予初值。   byte z = 22; // 声明并初始化z。   double pi = 3.14159; // 声明了pi。   char x = 'x'; // 变量x的值是字符'x'。   Java语言支持的变量类型有:   局部变量   成员变量   类变量   Java局部变量   局部变量声明在方法、构造方法或者语句块中;   局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;   访问修饰符不能用于局部变量;   局部变量只在声明它的方法、构造方法或者语句块中可见;   局部变量是在栈上分配的。   局部变量没有默认值,所以局部变量量被声明后,必须经过初始化,才可以使用。   实例1   在以下实例中age是一个局部变量

java中volatile,synchronized关键字

人盡茶涼 提交于 2020-03-30 12:59:54
volatile是变量修饰符,而synchronized则是作用于一段代码或方法;如下三句get代码: 1 int i1; 2 int geti1() {return i1;} 3 4 volatile int i2; 5 int geti2() {return i2;} 6 7 int i3; 8 synchronized int geti3() {return i3;} geti1() 得到存储在当前线程中i1的数值。多个线程有多个i1变量拷贝,而且这些i1之间可以相互不同。换句话说,另一个线程可能已经改变了它线程内的i1值,而这个值可以和当前线程中的i1值不相同。 在Java内存模型中,有main memory(主内存区域),这里存放了变量目前的“准确值”,每个线程也有自己的memory(例如寄存器)。为了性能,一个线程会在自己的memory中保存要访问的变量的副本。这样就会出现同一个变量在某个瞬间,在一个线程的memory中的值可能与另外一个线程memory的值,或者main memory的值不一致的情况。因此实际上存在一种可能:main memory的值i1值是1,线程1里的i1是2,线程2里的i1值是3,这在线程1和线程2都改变了他们各自的i1值,而且这个改变还没来得及传给main memory 或其他线程时就会发生。 geti2() 得到的是main

Java中关键字volatile 和 synchronized 的作用和区别

邮差的信 提交于 2020-03-30 12:59:41
volatile是变量修饰符,而synchronized则是作用于一段代码或方法 ;如下三个get方法的代码: 1 int i1; 2 int geti1() {return i1;} 3 4 volatile int i2; 5 int geti2() {return i2;} 6 7 int i3; 8 synchronized int geti3() {return i3;} geti1() 得到存储在当前线程中i1的数值。多个线程有多个i1变量拷贝,而且这些i1之间可以相互不同。换句话说,另一个线程可能已经改变了它线程内的i1值,而这个值可以和当前线程中的i1值不相同。 在Java内存模型中,有main memory(主内存区域),这里存放了变量目前的“准确值”,每个线程也有自己的memory(例如寄存器)。为了性能,一个线程会在自己的memory中保存要访问的变量的副本。这样就会出现同一个变量在某个瞬间,在一个线程的memory中的值可能与另外一个线程memory的值,或者main memory的值不一致的情况。因此实际上存在一种可能:main memory的值i1值是1,线程1里的i1是2,线程2里的i1值是3,这在线程1和线程2都改变了他们各自的i1值,而且这个改变还没来得及传给main memory 或其他线程时就会发生。 geti2() 得到的是main

java内存模型与多线程

我们两清 提交于 2020-03-30 12:48:42
现代计算机,cpu在计算的时候,并不总是从内存读取数据,它的数据读取顺序优先级是:寄存器-高速缓存-内存,线程计算的时候,原始的数据来自内存,在 计算过程中,有些数据可能被频繁读取,这些数据被存储在寄存器和高速缓存中,当线程计算完后,这些缓存的数据在适当的时候应该写回内存,当多个线程同时读 写某个内存数据时,由于涉及数据的可见性、操作的有序性,所以就会产生多线程并发问题。 Java作为平台无关性语言,JLS(Java语言规范)定义了一个统一的内存管理模型 JMM (Java Memory Model),JMM屏蔽了底层平台内存管理细节,在多线程环境中必须解决可见性和有序性的问题。JMM规定了jvm有 主内存 (Main Memory)和 工作内存 (Working Memory) ,主内存存放程序中所有的类实例、静态数据等变量,是多个线程共享的,而工作内存存放的是该线程从主内存中拷贝过来的变量以及访问方法所取得的局部变量, 是每个线程私有的其他线程不能访问,每个线程对变量的操作都是以先从主内存将其拷贝到工作内存再对其进行操作的方式进行,多个线程之间不能直接互相传递数 据通信,只能通过共享变量来进行。 JLS定义了线程对主存的操作指令: read,load,use,assign,store,write 。这些行为是不可分解的原子操作,在使用上相互依赖,read

volatile修饰变量

[亡魂溺海] 提交于 2020-03-30 11:47:19
volatile 影响编译器编译的结果,指出, volatile 变量是随时可能发生变化的,与 volatile 变量有关的运算,不要进行编译优化,以免出错,( VC++ 在产生 release 版可执行码时会进行编译优化,加 volatile 关键字的变量有关的运算,将不进行编译优化。)。 例如: volatile int i=10; int j = i; ... int k = i; volatile 告诉编译器 i 是随时可能发生变化的,每次使用它的时候必须从 i 的地址中读取,因而编译器生成的可执行码会重新从 i 的地址读取数据放在 k 中。 而优化做法是,由于编译器发现两次从 i 读数据的代码之间的代码没有对 i 进行过操作,它会自动把上次读的数据放在 k 中。而不是重新从 i 里面读。这样以来,如果 i 是一个寄存器变量或者表示一个端口数据就容易出错,所以说 volatile 可以保证对特殊地址的稳定访问,不会出错。 /********************** 一个定义为 volatile 的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。 精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是 volatile 变量的几个例子: 1) 并行设备的硬件寄存器(如:状态寄存器) 2

js全局变量

好久不见. 提交于 2020-03-30 11:46:32
在做东钿微信公众号 ,首页有房产评估和产调,有个checkbox ,点击则选中使用积分,取消选中则不使用积分,html结构和css样式都一样,唯一不一样的就是数据不一样,于是我就分开来写,没有写同一个方法公共调用。我用了一个变量作为开关,在此我犯了一个非常大的错误就是,两个时间我用了同一个变量名,而且是定义在外面,也就是全局变量,导致,评估和产调的效果互相受牵连。所以我就定义了两个变量。 来源: https://www.cnblogs.com/qiao20/p/5778671.html