首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

c++基础之变量和基本类型

对于这块内容,我觉得自己的知识还是有欠缺了,因此我决定近期重新翻一翻很早以前买的《c++ primer》 学习一下,整理学习笔记 背景介绍 为什么会想到再次重新学习c++的基础内容呢?...例如32、0xff、"hello world" 这样内容的数值 整数和浮点数的字面值 整数的字面值可以使用二进制、8进制、10进制、16进制的方式给出。...而浮点数一般习惯上以科学计数法的形式给出 二进制以 0b开头,八进制以0开头,十六进制以0x开头 数值类型的字面值常量最终会以二进制的形式写入变量所在内存,如何解释由变量的类型决定,默认10进制是带符号的数值...+支持分离式编译机制,该机制允许程序分割为若干个文件,每个文件可被独立编译。...如果程序分为多个文件,则需要一种在文件中共享代码的方法。c++中这种方法是声明与定义区分开来。在我之前的博客中,有对应的说明。

1.5K30

c语言进阶部分详解(数据在内存中的存储)

指针类型:void指针是一种通用指针类型,可以指向任何类型的数据。void指针可以通过强制类型转换(类型转换操作符)转换为其他类型的指针。例如,void* ptr可以指向任何类型的数据。...正数的反码与原码相同,负数的反码是原码中的1变为0,0变为1。例如,+5的反码为00000101,-5的反码为11111010 补码:补码是对反码1得到的结果。...正数的补码与原码相同,负数的补码是反码中的11。...然后使用类型转换,i的地址强制转换为char类型的指针通过解引用操作符*访问该地址所指向的字节值(即内存中最低处的值)。 返回该字节值,即返回i的最低有效字节。...这样做的目的,是节省1位有效数字 以32位浮点数为例,留给M只有23位,第一位的1舍去以后,等于可以保存24位有效数字 而对于E的情况就更加复杂了 E为一个无符号整数(unsigned int)

16610
您找到你想要的搜索结果了吗?
是的
没有找到

萌新不看会后悔的C++基本类型总结(一)

c++的基本类型包括char,short,int,long,lang lang(C++新增的),double,float,bool,其中除了double,folat两种浮点数类型之外都有有符号和无符号两种类型...通过这个你能告诉我你就理解单精度和双精度了吗?我相信很多人还是只知道有单精度和双精度这个叫法,却不知道具体意义。...+也提供了不同进制的输出方式,但C++默认是十进制的输出方式,想要改变默认的十进制输出方式,需要用到cout的一些特殊特性,头文件iostream提供了dec,hex,oct,分别用于表示十进制,十六进制和八进制...执行运算时,如果一个运算数是有符号的,而另一个是无符号的,那么C/C++会隐式的将有符号参数强制转换为无符号类型,假设这两个数都是非负数。...这也就解释了为什么unsigned int usa_1 = 10 和 int sa_1 = -100相会得到那么大的一个数,也就是常说的最大值1变为0的故事。

1.2K41

CC++基础入门(持续更新中)

; return 0; } 关于 #include #include 其实是一个预处理命令,意思为一个文件“放”在这条语句处,被“放”的文件被称为头文件。...例如, short 类型的值 -1(二进制表示为 1111~1111~1111~1111 )转换为 unsigned int 类型,其值为 65535 (二进制表示为 0000~0000~0000...补码:在二进制表示下,正数和 0 的补码为其本身,负数的补码是将其对应正数按位取反后一。...语法 仅在 C++ 语言中支持通过引用 & 传递,语法较为简单。 C/C++ 语言均支持指针传递,详情参见指针相关内容。 关于&: 在大多数情况下,& 表示“取地址”。...指针 ---- 7.1 指针的基本概念 ---- 作用: 可以通过指针间接访问内存。 内存编号是从0开始记录的,一般用十六进制数字表示。 可以利用指针变量保存地址。

4.3K20

浅析C++内存布局

包括:代码指令是如何保存的,库文件如何与应用程序代码静态链接,应用程序如何被装载到内存中开始运行,动态链接如何实现,C/C++运行库的工作原理,以及操作系统提供的系统服务是如何被调用的。...4.程序运行时,通过父类指针或者引用 调用函数时,编译器会先找到该对象中的虚函数指针,根据指针找到虚函数表,在虚函数表中找到对应的函数入口 地址进行调用。...二进制可执行文件的执行流程 可执行文件生成过程 预处理:进行头文件和宏定义的替换 编译:由编译器把高级语言代码编译为汇编代码 汇编:由汇编器把汇编代码翻译成二进制代码,也即是.o文件 连接:由连接器把多个....o文件连接成可执行文件;可分为编译时链接,加载时链接(程序被加载到内存中执行时),运行时链接(由应用程序来执行时)。...子进程通过execve系统调用调用加载器,加载器删除现有的虚拟内存段,创建新的代码段数据段堆栈,新堆栈被初始化为0,通过虚拟地址空间的页映射到可执行文件的页面大小chunk,新的代码段和数据段被初始化为可执行文件的内容

1.1K40

Matlab系列之文件操作

fseek指针指向文件指定位置ftell获取指针指向文件的当前位置frewind指针指向文件开始位置临时文件删除tempdir系统临时文件夹名称tempname临时文件夹中的临时文件名称 现在就开始对上表中的一些函数进行介绍...r’) 接着对刚刚的几种调用格式做介绍: fileID=fopen(filename) 打开文件filename以便以二进制读取形式进行访问,返回等于或大于3的整数文件标识符。...Version 的值加载到的 MATLAB版本支持功能压缩每个变量大小 的最大值'-v7.3'7.3(R2006b) 或更高版本保存加载部分变量,以及版本7的所有功能。...通过编码,可以在使用不同默认字符编码方案的系统之间共享文件,还可以使用版本6的所有功能。...S=load(___)使用前面语法组中的任意输入参数数据加载到S中。 1)如果filename是MAT文件,则S是结构数组。

2.1K21

PC逆向之代码还原技术,第一讲基本数据类型在内存中的表现形式.浮点,指针寻址公式

+中的浮点 在C++当中,有浮点数 float 以及 double用来存储浮点数. float 4个字节. double 8个字节....原因:浮点类型并不是一个浮点小数直接转为二进制进行存储的.而是浮点小数转换成二进制,重新编码.再进行存储.C/C++中的浮点数是有符号的....最后的23位则表示尾数. 1.正数浮点转为十六进制表示 2.浮点数转为16进制存储 现在我们要把浮点数转为十六进制存储在内存里.转换步骤 1.一个浮点数转化为二进制 例如:12.25 转为2进制...三丶浮点汇编 1.浮点栈 因为有了浮点协处理器.所以浮点指令的操作有点不同.它是通过浮点寄存器来实现的. 浮点寄存器是通过栈结构来实现的.也称作浮点栈....跟指针一样.指针也是保存地址.只不过引用就是对外隐藏了细节. 指针跟引用一样,产生的汇编代码也是一样的.不过使用的时候我们可以直接传引用进行打印.而使用指针 需要加上符号.

57370

汇编代码还原第一讲,基本类型以及浮点编码.

+中的浮点 在C++当中,有浮点数 float 以及 double用来存储浮点数. float 4个字节. double 8个字节....原因:浮点类型并不是一个浮点小数直接转为二进制进行存储的.而是浮点小数转换成二进制,重新编码.再进行存储.C/C++中的浮点数是有符号的....最后的23位则表示尾数. 1.正数浮点转为十六进制表示 2.浮点数转为16进制存储 现在我们要把浮点数转为十六进制存储在内存里.转换步骤 1.一个浮点数转化为二进制 例如:12.25 转为2进制...三丶浮点汇编 1.浮点栈 因为有了浮点协处理器.所以浮点指令的操作有点不同.它是通过浮点寄存器来实现的. 浮点寄存器是通过栈结构来实现的.也称作浮点栈....跟指针一样.指针也是保存地址.只不过引用就是对外隐藏了细节. 指针跟引用一样,产生的汇编代码也是一样的.不过使用的时候我们可以直接传引用进行打印.而使用指针 需要加上符号.

1.1K20

关于CC++ 一些自己遇到的问题以及解惑

再往下看,通过搜索,我了解到==导致死循环与编译器的内存分配有关,若内存递减分配会出现死循环,递增分配则不会,==通过在不同IDE输出内存地址,确实验证这个结论成立. ?        ...这时我们就可以用到main的参数了,利用argv[0]获取该程序的路径,通过算法解析,即可得到用户把exe放在哪里,那么我们在exe所在的路径下保存数据文本即可,这样就会提示用户体验。        ...,快捷方式放到桌面,右键选择属性,在其目标的文本框 exe文件后面 加入参数 ?...程序代码区: 无疑问,存放程序代码的地方,不过这这里的代码被处理成二进制进行保存。 文字常量区: 存放常量(程序在运行的期间不能够被改变的量)。...之所以可以保存到30多位,和浮点数的存储有关,浮点数是用科学记数法存储的,有关浮点数的定义,这个就涉及到计算机组成原理了,还是比较难的,大家有兴趣可以搜索IEEE754浮点数的标准,里面有关于浮点数的存储过程

66341

萌新不看会后悔的C++基本类型总结(二)

结果是4,说明C++MAX保存为int类型。...下面的结论是需要记住的:在C++中将使用这几种类型中能够存储该数的最小类型来表示,前提是该数后面没有后缀,如果有后缀,则按后缀指定的类型来存储,至于浮点数呢,C++规定过只要不加f后缀的浮点数默认都为double...常量指针: int number = 666; const int * p = &a; // int const * p 这种方法和上面等效,这个指针被修饰为常量指针,就是不可以通过这个指针修改变量的值...number = 66; //但是可以通过number修改,也就是间接修改了指针指向的变量。...// 并且需要注意的一点是虽然不可以通过这个指针修改变量的值,但是可以修改指针所指向的变量,也就是说下面是合法的。

71721

《程序是怎么跑起来的》读书笔记

补码,我们需要将二进制数的各数位的数值全部取反6 ,然后再将结果 1。 负数用补码表示 移位后需要在最高位补 0。类似于霓虹灯往右滚动的效果。这就称为逻辑右移。...二进制数作为带符号的数值进行运算时,移位后要在最高位填充移位前符号位的值(0 或 1)。这就称为算术右移。 符号扩充 就是指在保持值不变的前提下将其转换成 16 位和 32 位的二进制数。...指针 也是一种变量,它所表示的不是数据的值,而是存储着数据的内存的地址。通过使用指针,就可以对任意指定地址的数据进行读写。 数组 是指多个同样数据类型的数据在内存中连续排列的形式。...引导程序的功能是把在硬盘等记录的 OS 加载到内存中运行。虽然启动应用是 OS 的功能,但 OS 并不能自己启动自己,而是通过引导程序来启动。...I/O 控制器中有用于临时保存输入输出数据的内存。这个内存就是端口 。 各端口之间通过端口号 进行区分。端口号也称为 I/O 地址 。

1.5K31

CC++ 实现动态资源文件释放

资源可以包括图标、位图、字符串等,它们以二进制形式嵌入到可执行文件中。在某些情况下,我们可能需要从可执行文件中提取自定义资源保存为独立的文件。...简介 首先,让我们考虑一个场景:我们有一个 Windows 应用程序,其中包含了一个自定义的二进制资源比如默认的配置文件,我们希望这个资源提取出来保存为一个独立的文件以用于初始化程序配置项。...LoadResource 用于资源数据加载到全局内存块中,返回该内存块的句柄。在加载资源后,可以使用 LockResource 函数获取指向资源数据的指针。...,通过点击导入按钮输入资源类型为LYSHARK点击确定保存这个更改,如下图所示; 此时我们在主程序中引入#include "resource.h"包含资源头文件修改FindResource中的特定位置使其指向我们导入的配置文件...,此时会释放一个目录包含一个配置文件,如下图所示的输出结果; 结语 通过以上的代码实现,我们成功地将自定义资源提取保存为一个独立的文件

29210

CC++ 实现动态资源文件释放

资源可以包括图标、位图、字符串等,它们以二进制形式嵌入到可执行文件中。在某些情况下,我们可能需要从可执行文件中提取自定义资源保存为独立的文件。...简介首先,让我们考虑一个场景:我们有一个 Windows 应用程序,其中包含了一个自定义的二进制资源比如默认的配置文件,我们希望这个资源提取出来保存为一个独立的文件以用于初始化程序配置项。...LoadResource 用于资源数据加载到全局内存块中,返回该内存块的句柄。在加载资源后,可以使用 LockResource 函数获取指向资源数据的指针。...,通过点击导入按钮输入资源类型为LYSHARK点击确定保存这个更改,如下图所示;此时我们在主程序中引入#include "resource.h"包含资源头文件修改FindResource中的特定位置使其指向我们导入的配置文件...,此时会释放一个目录包含一个配置文件,如下图所示的输出结果;结语通过以上的代码实现,我们成功地将自定义资源提取保存为一个独立的文件

41910

C语言——数据的存储

目录 数据类型介绍 整型家族 浮点数家族:  构造类型:  指针类型 空类型 原码 反码 补码 大小端介绍 大端小端 数据类型介绍 相信大家应该已经了解了基本的数据类型吧 整型家族 char 为什么归根到...有正负的数据可以存放在有符号的变量中 只有正数的数据可以存放在无符号的变量中 浮点数家族:  构造类型:  指针类型 空类型 原码 反码 补码 计算机中的整数有三种表示方法,即原码、反码和补码...三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位 负整数的三种表示方法各不相同  原码 :直接二进制按照正负的形式翻译成二进制就可以....反码:原码的的符号位不变,其他位依次取反就可以得到了 补码:反码一就是补码 对于整数来说,数据存放内存中其实存放的是补码 大小端介绍 大端小端 大端(存储)模式,是指数据的低位保存在内存的高地址中...,而数据的高位,保存在内存的低地址 中; 小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地 址中

1.4K10

c++中fstream是什么意思_汽车配置参数图文详解

: ios::app // 从后面添加 ios::ate // 打开找到文件尾 ios::binary // 二进制模式 I/O (与文本模式相对) ios::in // 只读打开 ios::out...:app); //向现有文件中添加二进制数据 std::fstream test(“hahahah”,ios::in | ios::out | ios::trunc); //读、写、文件设定为空 ‍3...如file2.get(x);表示从文件中读取一个字符,并把读取的字符保存在x中。...; (5)文件定位 和C的文件操作方式不同的是,C++ I/O系统管理两个与一个文件相联系的指针。一个是读指针,它说明输入操作在文件中的位置;另一个是写指针,它下次写操作的位置。...每次执行输入或输出时,相应的指针自动变化。所以,C++文件定位分为读位置和写位置的定位,对应的成员函数是 seekg()和 seekp(),seekg()是设置读位置,seekp是设置写位置。

1.2K10

C++IO流简介

常见的输入输出设备有文件、键盘、打印机、屏幕等。数据可以按记录(或称数据块)的方式传递,也可以 流的方式传递。 所谓记录,是指有着内部结构的数据块。...典型的内部表示有:整型数的二进制表示、浮点数的IEEE表示、字符的ASCII或Unicode编码表示。数据的外部表示则根据不同的外部设备的需要,有具体不同的表现形式。...如果外部数据表示是可读的字符序列,则称为文本IO,否则为二进制IO。标准IO流的主要目的是支持文本IO,不直接支持二进制IO。...缓冲:用于在格式/解析与传递只缓存字符序列。对于输出,较短的字符序列格式化之后并不马上输出,而是保存在缓冲区里,待累积到一定规模之后再传递到外部设备。...4.IO流类库的组成结构 IO流类库在不同平台的具体实现上,可能会有所变化,但从总体设计上来看,C++流库主要由两个流类层次组成: (1)以streambuf类为父类的类层次 主要完成信息通过缓冲区的交换

96731

C++标准库中的数学函数

value分成尾数和阶     double atof(char *nptr) 字符串nptr转换成浮点数返回这个浮点数     double atoi(char *nptr) 字符串nptr转换成整数返回这个整数...  浮点数value转换成字符串返回该字符串     char *gcvt(double value,int ndigit,char *buf)     数value转换成字符串并存于buf中,返回...,void *buf,int nbyte)buf中的nbyte个字符写入文件号     为handle的文件中     int dup(int handle) 复制一个文件处理指针handle,返回这个指针...b表示文件二进制形式进行操作,t没必要使用     例: ┌——————————————————┐     │#include │     │main() │     │{ │     │ FILE...函数返回定位在stream中的当前文件指针位置,以字节表示     int rewind(FILE *stream) 当前文件指针stream移到文件开头     int feof(FILE *stream

1.1K00

C++基础知识一

:包装了std的C++文件,对应的是新的strng类。 main:操作系统通过调用main函数来运行C++程序,返回类型必须为int,即整数类型。...++a: a1. 循环语句 while语句:反复执行一段代码,直至给定条件为假为止。...头文件:使类或其他名字的定义可被多个程序使用的一种机制,通过#include指令使用头文件。 if语句:根据特定条件进行条件执行的语句。 初始化:创建对象时赋予他一个值。...通常通过调用成员函数来操作特定对象。 方法:成员函数的同义术语。 命名空间:库定义的名字放在一个单一位置的机制,命名空间可以避免名字冲突,C++标准库定义的名字在命名空间std中。...双引号———>\’ 回车符———>\r            进纸符———>\f     C++关键字 添加描述 C++操作符替代名 添加描述 指针与引用 添加描述 空指针不指向任何对象。

79300

AArch64 学习(一) 基础指令, 内存布局, 以及基础栈操作

对 C 系语言来说, 我们说的跨平台, 其实就是通过同一份源码在编译时, 根据不同 target 架构指令集, 生成不同的二进制文件来实现的. 1.2....RISC 使用 load 读取内存数据到通用寄存器中, 计算完之后通过 store 保存到内存中 2.2....X30 被用作 LR Link Register, 也可以通过 LR 来使用. 在方法调用前, 保存返回地址....X0 str X0, [X1] // 访问内存可以一个 offset, 相当于把 X0 保存到 新地址 = (地址 X1 + 4) 对应的内存中. lrd 也同理. str X0, [X1, #4...最下面的是代码段, 保存二进制的代码, 主要是各种函数, 拥有只读和执行的权限. 这个段的代码可以被执行, 但是不可写入. 数据段, 主要保存常量值或全局静态值, 拥有只读权限, 也是不可写入的.

2.3K30

序列化介绍

档案可以是二进制文件,文本文件,XML文件,或者其他用户定义的类型。 Boost序列化库的目标是: l 代码的可移植性–只依靠ANSI C++的特性。...格式器完成了程序数据转化到能被存储传输的格式的工作,同时也完成了数据转化回来的工作。....例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象,可以将对象序列化到流、磁盘、内存和网络等等。它的优点在于可以所有的对象成员都保存下来,并且性能优于XML序列化。...反序列化时,CArchive类的对象与保存对象的文件相关联;然后新建一个需要反序列化的对象,利用CArchive类的>>运算符重载文件里的内容恢复到需要反序列化的对象中。...在使用指针的情况下,为了达到重新构造原始数据结构的目的,仅仅存储指针的值是不够的,指针指向的对象也必须被存储。当成员最后被装载,一个新的对象被创建,指向新的对象的新的指针被装载到类的成员中。

90751
领券