c++变量声明、定义,const变量
变量声明和定义的主要区别:
声明不分配存储空间,定义分配存储空间。
变量可以声明多次,但只能定义一次(一个变量只能在一个源文件中定义)
声明通常放在头文件(.h)中,定义放在源文件(.cpp)中
变量声明(纯声明,有extern关键字):
extern int i; //不分配存储空间
定义:
int i; //无extern关键字,分配存储空间
extern int i = 1; //虽然有extern,但是变量被初始化,还是变量的定义
(变量的定义其实已经包含变量的声明,此处“定义”即为包含声明的定义,也可理解为变量定义必然包含一次声明)
区别变量声明和定义的方法:
变量声明:含有extern关键字且变量没有初始化
变量定义:不含extern关键字或者含有extern关键字但是变量被初始化
const变量和普通变量(为文件中的全局变量的情况):
普通变量默认为extern属性(即该变量可以在定义该变量的文件之外的文件使用,是所有源文件的全局变量,前提:该变量在另一个变量中被声明);
const变量默认不含extern属性(即该变量默认为定义该变量的文件的变量(只能在该文件中使用),只是该源文件的全局变量)
头文件通常包含变量的声明,类的定义,const变量的定义
(注:不能包含普通变量的定义,由于普通变量默认为extern属性,也就是所有文件的全局变量,当多个文件同时包含该头文件时,该普通变量会被重复定义,编译出现错误;但是头文件可以包含const变量的定义,由于const变量默认不含extern属性,即cosnt变量只是定义它的那个文件的全局变量,所以当多个文件同时包含该头文件时,cosnt变量不会被重复定义;简而言之,含extern属性的变量不能被多个文件重复定义;不含extern属性的变量可以被多个文件重复定义,相当于每个文件自己定义了一个只属于该文件本身的全局变量)
const变量也可被显式地定义为extern变量,即extern const int i = 1; 此时该const变量拥有extern属性。
c++变量声明、定义,const变量的更多相关文章
- 转:MySQL中变量的定义和变量的赋值使用(转)
MySQL中变量的定义和变量的赋值使用(转) 说明:现在市面上定义变量的教程和书籍基本都放在存储过程上说明,但是存储过程上变量只能作用于begin...end块中,而普通的变量定义和使用都说的比较 ...
- 定义一个Person类,其中包括:1.定义属性:姓名、年龄、民族作为成员变量。定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化。3.定义多个方法:分别显示相应的属性值,例如getName(){System.out.print("名称="+name+";"); }4.定义一个方法“成长”:实现年龄的增加,每执行一次年龄增加1
题目显示不全,完整题目描述: (1)定义一个Person类,其中包括:1.定义属性:姓名:年龄:民族作为成员变量.定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化.3.定义多个方法:分别显 ...
- 变量声明---let,const,解构
let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题. const是对let的一个增强,它能阻止对一个变量再次赋值. 块作用域 当用let声明一个变量,它使用的是 ...
- ES6系列之变量声明let const
ES6也出来好久了,最近闲来无事就想着吧es6做一个系统的总结,巩固自己的知识,丰富一下博客. 为什么叫ES6 实际上是ECMA的一个打的标准,这个标准是在2015年6月发布的,正式的名字实际是es2 ...
- ES6学习笔记之变量声明let,const
最近用淘宝的weex做了个项目,最近稍微闲下来了.正好很久没有接触RN了,所以趁这个机会系统的学习一下ES6的相关知识. 孔子说:没有对比就没有伤害.所以我们要拿ES6和ES5好好对比的学习.这样才能 ...
- C++ 变量声明 定义 作用域 链接性总结
变量定义 变量的定义用于为变量分配存储空间,还可以为变量指定初始值.在一个程序中,变量有且仅有一个定义. 变量声明 用于向程序表明变量的类型和名字.程序中变量可以声明多次,但只能定义一次. 变量的类型 ...
- MySQL中变量的定义和变量的赋值使用(转)
说明:现在市面上定义变量的教程和书籍基本都放在存储过程上说明,但是存储过程上变量只能作用于begin...end块中,而普通的变量定义和使用都说的比较少,针对此类问题只能在官方文档中才能找到讲解. 前 ...
- ES6中声明变量 let和const特点
在ES6中我们有两种定义变量的方式:let const let特点: 1.let定义时不会进行变量声明提升 2.变量不允许被重复定义 3.变量不可以被删除 4.在for循环当中用let定义i 循 ...
- 变量声明和定义的关系------c++ primer
为了允许把程序分成多个逻辑部分来编写,c++语言支持分离式编译机制 为了支持分离式编译,c++语言把声明和定义区分开来.声明(declaration)使得名字为程序所知,一个文件如果想使用别处定义的名 ...
随机推荐
- 【转】每天一个linux命令(33):df 命令
原文网址:http://www.cnblogs.com/peida/archive/2012/12/07/2806483.html linux中df命令的功能是用来检查linux服务器的文件系统的磁盘 ...
- ORA-25205: the QUEUE SYS.KUPC$S_1_20180123193821 does not exist
[oracle@hbjfdba:/oratmp]#expdp \'XXX as sysdba\' DIRECTORY=TMP_DUMP_DIR DUMPFILE=NEW_LOCAL_HB_DMN_%U ...
- net.sf.ezmorph.bean.MorphDynaBean cannot be cast to java.util.Map
public static void main(String[] arg0) { String reString = "{" + "\"code\": ...
- Python——包
包 —— 把解决一类问题的模块放在同一个文件夹里 包的导入 import 和 from ... import 都行 导入之前:凡是带点的,点的左边都必须是包 导入之后:点的左边可以是包.模块.函数.类 ...
- MySql数据库中敏感字段加密处理方案
比如数据表中有一个手机号码字段是敏感字段,不想明文存储,可以是用MySQL的自带的函数处理 Table 12.17 Encryption Functions Name Description AES_ ...
- 【jmeter】jmeter之-断言和检查点
断言就类似LoadRunner中的检查点.对上一个请求返回的信息,做字符串.数据包大小.HTML.XML.图片等做判断,确保返回的信息的准确性. 简单的来理解一下,上一章讲到,我们对用户名和密码进行了 ...
- Linux基本操作命令及作用
文件和目录操作命令 命令 作用 cd change directory,切换目录 cp copy,其功能为复制文件或目录 find 用于查找目录或文件 mv move ,移动或重命名文件或目录 pwd ...
- Web(click and script) 与 Web(HTTP/HTML)协议区别
先从最简单的说明上来看, Web(HTTP/HTML): Emulation of communication between a browser and Web Serve ...
- 杂项:Nuget
ylbtech-杂项:Nuget Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展.在使用Visual Studio开发基于.NET Framework的应用时,Nug ...
- Monit安装与配置
Monit安装与配置 monit 监控并自动重启服务 官方文档