变量

C —— 存储类

▼魔方 西西 提交于 2020-03-08 16:44:12
存储类定义 C 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。 auto auto 存储类是所有局部变量默认的存储类。也就是说 int number = 10; 等价于 auto int number = 10; auto 只能用在函数内,即 auto 只能修饰局部变量。 register register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个词),且不能对它应用一元的 ‘&’ 运算符(因为它没有内存位置)。寄存器只用于需要快速访问的变量,比如计数器。还应注意的是,定义 ‘register’ 并不意味着变量将被存储在寄存器中,它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。例如: register int number = 10 ; static static 修饰符可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。全局声明的一个 static 变量或方法可以被任何函数或方法调用,只要这些方法出现在跟 static 变量或方法同一个文件中。例如: # include <stdio.h> static int STATIC_NUMBER = 27 ; int main ( ) { printf ( "static int

windows10 jdk下载及环境配置

大憨熊 提交于 2020-03-08 13:10:42
一、环境准备    windows10 系统     jdk 各种版本(配置大同小异) 二、下载并安装jdk    下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html 三、环境变量配置    1.此电脑中右键>>“属性”>>点击“高级系统设置”       2.在弹出的系统属性中选择“环境变量”     3.在弹出的窗口中选择新建>>"新建系统变量" 变量名 JAVA_HOME 变量值 jdk存放的路径   4.在系统变量中选择已经存在的path,双击查看列表,并且新建输入“ %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin” 按确认即可。    5.点击新建系统环境变量 变量值 classpath 变量值 %JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (备注:java1.5以上就不需要配置这步了)      6.最后输入“ java -version” 若出现下图所示,则java jdk安装成功啦! 来源: https://www.cnblogs.com/lcaiqin/p/10355619.html

Java中堆内存和栈内存详解

删除回忆录丶 提交于 2020-03-08 12:59:23
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。 堆内存用于存放由new创建的对象和数组 。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放。而数组&对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放, 数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因, 实际上,栈中的变量指向堆内存中的变量,这就是 Java 中的指针! java中内存分配策略及堆和栈的比较    1 内存分配策略  

Java中堆内存和栈内存详解

ぐ巨炮叔叔 提交于 2020-03-08 12:58:49
  Java把内存分成两种,一种叫做栈内存,一种叫做堆内存。   在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。 当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。   堆内存用于存放由new创建的对象和数组。 在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。    引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放 。而数组&对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放, 数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉 。这个也是java比较占内存的主要原因,实际上,栈中的变量指向堆内存中的变量,这就是 Java 中的指针! java中内存分配策略及堆和栈的比较    1

C++: 变量和基本类型要点小结

时光怂恿深爱的人放手 提交于 2020-03-08 12:58:26
文章目录 列表初始化 声明与定义 名字的作用域 引用 空指针 auto类型说明符 decltype类型说明符 列表初始化 int a = 0 ; int a = { 0 } ; int a ( 0 ) ; int a { 0 } ; 形如 a{} 的成为列表初始化,当使用{}且存在丢失信息风险的时候,编译器会报错,例如 long double d = 3.1415926 ; int e { d } ; // 报错 int f ( d ) ; // 不报错 声明与定义 变量声明规定了变量的类型和名字,定义在此基础上还申请存储空间 变量只能被定义一次,但是可以被多次声明 extern int i ; //声明而非定义i int j ; //声明且定义j 名字的作用域 函数体之外定义:全局作用域 函数体之内定义:块作用域 允许在内层定义域 重新定义 外层已有的名字 引用 引用并非对象,他只是已有对象的别名 空指针 - C: NULL C++: nullptr auto类型说明符 不知道具体类型,可以通过初始值推断,因此 auto 定义的变量必须有初始值 decltype类型说明符 选择并返回操作数的数据类型,例如 int a = 10 ; decltype ( a ) b = 4 ; // b是int类型 来源: CSDN 作者: AmarisEx 链接: https://blog

JAVA并发编程的学习之路

让人想犯罪 __ 提交于 2020-03-08 12:57:07
一Java内存模型 1 Java内存模型(JMM):为了屏蔽各种硬件和操作系统的内存访问差异, 以实现java程序在任何平台下有相同的并发效果,Java虚拟机规范中定义了java内存模型。 它规范了java虚拟机与计算机内存是如何协调工作的 ,规定了一个线程何时可以看到被其它线程修改过的共享变量的值,以及如何在必须时同步的访问共享变量。 2 同步8种操作:lock、unlock、read、load、use、assign、store、write lock:作用与主内存的变量,把变量设成一个线程独占的状态 unlock:作用与主内存的变量,把锁定的线程释放 read:作用与主内存的变量,把一个变量的值,输送到工作内存中 load:作用与工作内存的变量,把read从主内存读入的变量放入工作内存的副本中 use:作用与工作内存的变量,把工作内存中变量的值传给执行引擎,每当虚拟机遇到一个需要用到这个值的字节码指令时执行的操作 assign(赋值):作用与工作内存的变量, 把一个从执行引擎获取到的值赋给工作变量,每当虚拟机遇到一个需要赋值的字节码指令时执行的操作 store:作用与工作内存的变量,把工作内存中的变量值传入到主内存 write:作用与主内存的变量,把store传入过来的变量存入主内存 二线程安全性 1 线程安全性:当多个线程访问某个类时,不管这些线程采用何种调度方式

欧姆龙、松下、基恩士PLC进行连续数据采集、时序和故障追踪的方法

旧时模样 提交于 2020-03-08 12:54:46
PLC数据和状态的连续记录,可以为历史数据采集、时序分析和故障追踪等提供便利(可参考文章《 PLC的时序和调试工具 》、《 用PLC录波排除控制系统疑难故障的方法 》。此处的时序分析不是指精确到扫描周期的分析,由于PLC扫描速度很快,对于这种分析,需要采用厂家提供的(大部分厂家是没有的)录波功能(一般是利用PLC内部空间进行缓存,进行短时间状态记录,再提取分析)。这种非常精确的录波无法应付连续的数据采集和追踪需求。上边的第二篇文章为大家说明了故障的分类,以及如何选择合适的录波软件,大家可以参考。 专业采集软件以国外的居多,比如大家熟悉的PLC-ANALYZER、IBA等,价格较高,无法免费使用。国内的PLC-Recorder,免费功能强大,入门简单,已经能支持多种PLC了,其中包括题目所说的欧姆龙、松下、基恩士、三菱这些日系的PLC,其中三菱的PLC已经另外一篇文章进行了介绍。下面将简单介绍一下利用该软件对欧姆龙、松下、基恩士各型PLC进行录波的操作方法。 一、配置和采集 1、通道配置 通道就是需要访问的PLC设备,此处可以创建多达16个PLC设备,同时进行记录。点击按钮1可以调出通道配置的画面,进行通道的各种操作。按2可以打开每个通道的子画面(3),进行通道的配置,此处可以输入IP地址,协议类型、PLC内的端口信息、采集周期、是否激活(是否投入录波)等。 每种PLC

Java内存分配原理

。_饼干妹妹 提交于 2020-03-08 12:41:16
本文将详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区域: ◆寄存器:我们在程序中无法控制 ◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 ◆堆:存放用new产生的数据 ◆静态域:存放在对象中用static定义的静态成员 ◆常量池:存放常量 ◆非RAM存储:硬盘等永久存储空间 Java内存分配中的栈 在函数中定义的一些基本类型的变量数据和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中 为这个变量分配内存空间,当该变量退出该作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 Java内存分配中的堆 堆内存用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。 在堆中产生了一个数组或对象后,还可以 在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。 引用变量就相当于是 为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。引用变量就相当于是为数组或者对象起的一个名称。 引用变量是普通的变量,定义时在栈中分配,引用变量在程序运行到其作用域之外后被释放。而数组和对象本身在堆中分配,即使程序 运行到使用 new

java内存分配原理

佐手、 提交于 2020-03-08 12:39:03
一般Java在内存分配时会涉及到以下区域: ◆寄存器:我们在程序中无法控制 ◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 ◆堆:存放用new产生的数据 ◆静态域:存放在对象中用static定义的静态成员 ◆常量池:存放常量 ◆非RAM存储:硬盘等永久存储空间 Java内存分配中的栈 在函数中定义的一些基本类型的变量数据和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中 为这个变量分配内存空间,当该变量退出该作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 Java内存分配中的堆 堆内存用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。 在堆中产生了一个数组或对象后,还可以 在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。 引用变量就相当于是 为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。引用变量就相当于是为数组或者对象起的一个名称。 引用变量是普通的变量,定义时在栈中分配,引用变量在程序运行到其作用域之外后被释放。而数组和对象本身在堆中分配,即使程序 运行到使用 new 产生数组或者对象的语句所在的代码块之外

结构体

本小妞迷上赌 提交于 2020-03-08 12:16:12
结构体 一、结构体类型与结构体变量的定义 使用结构体表示数据: 1.定义结构体类型 2.定义结构体类型的变量 3.引用结构体变量的各成员变量 相比简单的变量的定义,这一过程需要先自定义结构体类型。 注: 1.结构定义并不预留内存,它只是一个模板 2.结构定义放置在程序的开始部分,位于头文件声明之后。 3结构定义仅描述了一个结构的形式。如果要在程序里使用结构,需要声明结构变量。 定义结构之后,声明变量。 声明变量的形式: ①先定义结构,再声明结构变量: struct student { int num ; char name [ 20 ] ; float score ; } ; struct student student1 , student2 ; ②在定义结构类型的同时声明结构变量: struct student { int num ; char name [ 20 ] ; float score ; } ; student1 , student2 ; ③直接声明结构变量: struct { int num ; char name [ 20 ] ; float score ; } ; student1 , student2 ; 嵌套结构及引用: 结构体类型的成员也可以是另一个结构体类型 二、结构体类型变量成员的引用 引用结构体类型变量成员的一般形式: 结构体类型变量名.成员名--