首页 > 其他分享 >2 变量和基本类型

2 变量和基本类型

时间:2023-08-13 15:33:07浏览次数:37  
标签:基本 初始化 const 变量 常量 对象 类型 指针

  • 编译器可能会做类型转换
  • 切勿混用带符号类型和无符号类型
  • C++中初始化和赋值是两个完全不同的操作
  • 未初始化的变量含有一个不确定的值
  • 作用域是嵌套的
  • 全局变量不显示初始化会得到0,局部变量不可以不初始化,全局变量之间不要有初始化关联。
  • 不要返回本地变量的地址(本地变量的地址在程序结束后不可控),返回全局变量的或者静态本地变量的地址是安全的。
  • extern关键字:让头文件中声明的变量在定义一次后被多个文件使用(使用extern的文件需要有申明)。
  • 如果想要在多个文件之间共享const对象,必须在变量前加上extern。
  • static关键字:1)在修饰变量的时候,static 修饰的静态局部变量只执行初始化一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。2)static 修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是 extern 外部声明也不可以。3)static 修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。static 修饰的变量存放在全局数据区的静态变量区,包括全局静态变量和局部静态变量,都在全局数据区分配内存。初始化的时候自动初始化为 0。

 

  • c++ 复杂就复杂在于它提供了太多的内存模型。或者说是一提供了太多可以放对象的地方,可以放在堆,栈,全局数据区里面。二提供了太多可以访问对象的方式,可以通过变量本身,可以通过指针,和references。3*3 九种组合。java 的对象只能放在堆里面,访问对象的方式只有指针。内存模型更简单。
  • references 特点:clean but hidden
  • Bindings do not change at runtime , unlike pointers。
  • reference 的实现是const指针。个人认为有一点像顶层const。
  • 没有reference 的 reference。对reference 的操作就是对其绑定对象的操作。
  • 为什么会出现references,可能只是为了少一些*,更加清爽。
  • java 的指针不能做计算,c++ 的指针可以做计算 ++等,这是c的特性。c++的引用和java的引用是不同的。
  • c++的指针也是对象,可以定义对指针的引用。

 

  • const 动作在编译时刻保证
  • 默认状态下,const 对象仅在文件中有效。想要在不同文件中共享需要extern关键字。
  • 顶层const 表示指针本身是个常量,底层const 表示指针所指的对象是个常量
  • 常量的引用不能用作修改它所绑定的对象,保证不从自己这里去修改对象。
  • 引用的类型必须与其引用对象的类型一致(类型不一致,该应用可能会绑定一个临时量而非引用对象,而临时对象是const的,可能会引发错误)
  • char * s = "hello,world" ; 该语句中的字符是放在全局数据区的,s[0] = 'b';会造成总线错误。--翁凯
  • c++ 的语法允许把const关键字放在成员函数的参数列表之后,此时,紧跟在参数列表后面的const表示this 是一个指向常量的指针。 动作如 const A* const this。
  • constexpr 和常量表达式。
  1. 常量表达式是指值不会改变并且在编译时刻就能得到计算结果的表达式
  2. c++11规定,允许将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化。

 

  • 当引用被作为auto初始值时,真正参与初始化的其实是引用对象的值,auto一般会忽略顶层const,保留底层const。
  • decltype 类型指示符,会保留const

标签:基本,初始化,const,变量,常量,对象,类型,指针
From: https://www.cnblogs.com/wuyun--wy/p/17626588.html

相关文章

  • java中基本数据类型
    Java中的基本数据类型包括以下八种:整数类型:byte:占用1个字节,取值范围为-128到127。short:占用2个字节,取值范围为-32768到32767。int:占用4个字节,取值范围为-2147483648到2147483647。long:占用8个字节,取值范围为-9223372036854775808到9223372036854775807。浮点数类型:float:占用4个字节......
  • HTML&CSS基本知识
    HTML&CSS基本知识一、HTML基本介绍W3C标准(成立于1994年,web技术领域最权威和具影响力的国际中立性技术标准机构)worldWidewebConsortium(万维网联盟)W3c标准包括:结构化标准语言(HTML、XML)表现标准语言(CSS)行为标准(DOM,ECMAScript)HTML:超文本标签语言h5并不是新语言,而是html......
  • Redis(九)五种数据类型的底层结构
    Redis(九)五种数据类型的底层结构1string​ string是redis中最常见的数据类型基本编码方式是RAW,基于简单动态字符串(SDS)实现,存储上限为512MB,此时的objecthead和SDS是两个独立的空间,是通过redisObject的buf指针指向的实际存储的SDS如果存储的SDS长度小于44字节,则采用EMBST......
  • 4.0 Python 变量与作用域
    在python中,变量的作用域决定了变量在哪些位置可以被访问。一个程序中的变量并不是所有的地方都可以访问的,其访问权限决定于变量的赋值位置。python中有两种最基本的变量作用域:局部作用域和全局作用域。局部变量是在函数内部定义的变量,只能在其被声明的函数内部访问。而全局变量则......
  • 第三章 类和变量
    第三章类和变量3.1类R中的所有变量都有一个类,表明此变量属于什么类型。值得的注意是,所有的变量除了类之外,还有一个内部存储类型(通过typeof访问)、一个模式(mode),以及一个存储模式(storage.mode)。R有四种不同的函数能告诉你变量的类型是什么,即class、typeof、mode和storage......
  • 第四章 数据类型
    第四章数据类型由数据构成的一个矩形数组称为数据集,行称为观测,列称为变量查看R中所有内置的数据集data(package=.packages(all.available=TRUE))查看指定包中的数据集data(package=“packagename”)查看某个数据集的信息Help函数or?4.1向量向量是数值的有序集,......
  • maven系列:基本命令(创建类、构建打包类、IDEA中操作)
    目录一、创建类命令创建普通Maven项目创建WebMaven项目发布第三方Jar到本地库中二、构建打包类命令编译源代码编译测试代码编译测试代码打包项目清除打包的项目清除历史打包并重新打包清除并install到本地查看当前项目已被解析的依赖上传到私服三、IDEA中Maven操作通过Terminal执......
  • Java里的数据类型有哪些?
    Java的数据类型主要分为两大类:内置数据类型(基本数据类型):整数类型:byte:8位有符号整数,范围从-128到127。short:16位有符号整数,范围从-32768到32767。int:32位有符号整数,范围从-2,147,483,648到2,147,483,647。long:64位有符号整数,范围从-9,223,372,036,854,775,808到9,223,37......
  • PyQt-GUI程序基本结构解析
    1.导入包与模块fromPyQt5.Qtimport*importsys创建一个应用程序对象app=QApplication(sys.argv)创建控件,设置控件window=QWidget()window.show()应用程序执行,进入到消息循环sys.exit(app.exec_())程序流程解析fromPyQt5.Qtimport*,先导入PyQt5所需......
  • 学习go语言编程之数据类型
    数据类型概述Golang语言内置了如下基础数据类型:布尔类型:bool整型:int8,unit8,int16,uint16,int32,uint32,int64,uint64,int,uint,uintptr浮点类型:float32,float64复数类型:complex64,complex128字符串:string字符类型:rune错误类型:error同时,Golang还支持如下复合类型:指针:pointer数组......