c/c++学习笔记(一)

C/C++学习笔记:算法知识之平衡树学习笔记,收藏一波吧! 平衡树存储: size就是节点的个数。 value是节点代表的权值。 权值相同的两个节点被视为一个,num记录折叠数量。 rand是随机数,用来维护平衡树。 son就是两个儿子。 平衡树size更新: 实际操作中,各个变量的值都是不断更新的,size也不例外。 函数体: 一个节点包括的节点个数用脚也能想到:左儿子size与右儿子size的和,加上这个节点折叠数量。 ... 阅读详情

书籍

1、《Essential C++》
2、《C++ Primer》
3、《Effective C++》《More Effective C++》
4、《C++标准程序库》
5、《深度探索c++对象模型》

各种变量类型的大小

各个类型的变量长度由编译器来决定(实际上与操作系统位数和编译器都有关)使用时可用sizeof()得到,当前主流编译器一般是32位或64位。

sizeof()功能:计算数据空间的字节数

1. 与strlen()比较
strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为’\0’的数组元素。
而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示, 会计算’\0’。

// An highlighted block
//两者差1为即差‘\0’
char str[5] = "abcd";
strlen(str) == 4
sizeof(str) == 5

另,字节数概念:1、bit为位即0与1(计算机中的最小数据单位);2、8个bit组成一个字节byte(存储空间的基本计量单位),通常一个字节可存一个英文,两个可存汉字,上述代码计算的即为字节数;3,字由字节组成的,它是计算机处理数据时一次存取,加工和传送的数据长度,它的位数称之字长,一台8位机子:一个字等于1个字节,字长为8位,如果是16位的机子,一个字等于2个字节,字长为16,32位则为4个字节,字长32位。字是计算机处理数据和运算的单位。

2. sizeof 语法
sizeof有三种语法形式:
1) sizeof (object); //sizeof (对象)

2) sizeof object; //sizeof 对象

3) sizeof (type_name); //sizeof (类型)
对象可以是各种类型的变量,以及表达式(一般sizeof不会对表达式进行计算)。

3. 基本数据类型的sizeof
基本数据类型是指short、int、long、float、double这样的简单内置数据类型,它们的内存大小是和系统相关的,所以在不同的系统下取值可能不同。

4.结构体的sizeof
结构体的sizeof涉及到字节对齐问题。计算机组成原理告诉我们字节对齐有助于加快计算机的取数速度,否则就得多花指令周期。

为此,编译器默认会对结构体进行处理(实际上其它地方的数据变量也是如此),让宽度为2的基本数据类型(short等)都位于能被2整除的地址上,让宽度为4的基本数据类型(int等)都位于能被4整除的地址上,依次类推。这样,两个数中间就可能需要加入填充字节,所以整个结构体的sizeof值就增长了。

字节对齐的细节和编译器的实现相关,但一般而言,满足三个准则:
1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除。
2) 结构体的每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要,编译器会在成员之间加上填充字节(internal adding)。
3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要,编译器会在最末一个成员后加上填充字节(trailing padding)。

注意:空结构体(不含数据成员)的sizeof值为1。试想一个“不占空间“的变量如何被取地址、两个不同的“空结构体”变量又如何得以区分呢,于是,“空结构体”变量也得被存储,这样编译器也就只能为其分配一个字节的空间用于占位了。

5. 联合体的sizeof
结构体在内存组织上是顺序式的,联合体则是重叠式,各成员共享一段内存;所以整个联合体的sizeof也就是每个成员sizeof的最大值。

6. 数组的sizeof
数组的sizeof值等于数组所占用的内存字节数。

7.数组的sizeof
指针是用来记录另一个对象的地址,所以指针的内存大小当然就等于计算机内部地址总线的宽度。与指针所指对象半毛钱关系都没有!
在32位计算机中,一个指针变量的返回值是4。
在64位计算机中,一个指针变量的返回值是8。

8. 函数的sizeof
sizeof也可对一个函数调用求值,其结果是函数返回值类型的大小,函数并不会被调用。
对函数求值的形式:sizeof(函数名(实参表))
注意:
1)不可以对返回值类型为空的函数求值。
2)不可以对函数名求值。
3)对有参数的函数,在用sizeof时,须写上实参表。

数据类型长度表格(单位byte)

类型32位计算机64位计算机
int44
short int22
long int48
long long int88
char11
char *48
float44
double88

参考资料

https://www.cnblogs.com/huolong-blog/p/7587711.html

安防相机宽动态(WDR)技术解析:从原理到实战应用 本文深入解析安防相机宽动态(WDR)技术原理,对比多次曝光与DOL-WDR等实现方式,并区分硬件WDR与数字WDR(DWDR)的本质差异。文章重点阐述了WDR在逆光出入口、夜间道路监控等五大典型场景的实战应用与调参技巧,旨在帮助用户根据实际需求正确选择与配置,确保监控系统在复杂光线下清晰成像。 阅读详情

相关推荐

hi3519dv500 os04a10输入调试

因该sensor接在soc端的iic6,在驱动中(Hi3519DV500_SDK_V2.0.1.1\smp\a55_linux\source\mpp\cbb\isp\user\sensor\hi3519dv500\omnivision_os04a10\os04a10_sensor_ctl.c)注意总线的选择。mem_process_isolation=1 改为 mem_process_isolation=0。2、OT_MIPI_SET_HS_MODE配置为LANE_DIVIDE_MODE_1。

linus 3162

C++学习笔记(1)基础部分

C++学习笔记一 .C与C++区别1.1 constconst与指针1.2 引用(别名)*引用与const1.2 默认值参数1.3 内联函数1.4 函数重载1.2.1 C与C++函数的互相调用1.5 函数摸板数组引用与函数模板1.6 new与malloc1.7命名空间1.8 右值引用*右值引用与将亡值右值引用的应用移动赋值与移动拷贝右值引用与函数模板二.面向对象2.1 面向对象2.2 this 指针const与成员方法2.3构造函数构造函数的类型转化拷贝构造函数2.4析构函数友元=运算符重载()运算符重载缺

qq_53307983的博客 6414

Matterport3D数据集介绍与下载(全网最详细)

Matterport3D数据集介绍与下载(全网最详细)

shannanshouyin的博客 2165

【C++】C++学习笔记

所谓数组,就是一个集合,里面存放了相同类型的数据元素特点1:数组中的每个==数据元素都是相同的数据类型==**特点2:**数组是由==连续的内存==位置组成的数据类型 数组名[ 数组长度 ];数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};数据类型 数组名[ ] = { 值1,值2 ...};示例//定义方式1//数据类型 数组名[元素个数];//利用下标赋值//利用下标输出//第二种定义方式。

xifan的博客 7918

【Dify精讲】第2章:后端服务架构深度剖析

Dify后端采用Flask应用工厂模式实现模块化开发,通过蓝图架构将API分为控制台、Web应用和服务接口三大模块。其设计亮点包括:1) 应用工厂模式支持多环境配置和独立测试;2) 蓝图分层管理实现API模块化,各模块职责清晰;3) 严格遵循RESTful原则设计API接口;4) 使用Flask-RESTful扩展简化API开发。这种架构既保持了Flask的灵活性,又实现了企业级应用的可维护性,是Flask项目架构的优秀实践案例。

wiyi9891的专栏 2126

BRAM在图像处理缓存中的实现:完整示例解析

深入讲解如何利用BRAM高效实现图像处理中的数据缓存,结合实际案例解析BRAM的应用优势与设计细节,提升系统性能。

weixin_29443363的博客 332

C++学习笔记

1.面向对象 (1)对象相当于C语言中的变量,组成类似于属性+服务/数据+对外接口。 面向对象:按照存在,程序描述有什么内容,内容的关系是什么。 问题空间 —映射(map)— 方法空间 面向过程:按照时间顺序,事情发生的流程是什么。 ...

qq_40808423的博客 1170

SAPIEN ManiSkill3 入门教程(一)

请注意,table.set_pose(pose) 设置的是演员在世界帧中的坐标系姿势。移除的实体可以再次添加到场景中,但已在场景中的实体则不能再次添加。显示器可以是物理的(如显示器),也可以是虚拟的(如 VNC)。我们可以通过 get_pose()、get_linear_velocity() 和 get_angular_velocity()获取演员的运动量(姿势、线速度、角速度)。现在,让我们创建一个斜坡。例如,您可能需要一个简单的碰撞形状来进行快速模拟,但却需要一个复杂的视觉形状来进行逼真的渲染。

机器人控制与仿真应用 3070

C++详细学习笔记(一)

首先,本次学习主要参考的书籍是C++Primer Plus第六版,为了方便今后参阅,故写下该学习笔记。 C++是在C语言基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言,是C语言的超集。 一、预备知识 C++有三件法宝:1、继承了C语言高效、简洁、快速和可移植性的传统(C代表的过程性编程);2、面向对象的特性带来了全新的编程方法,这种方法是为了应付复杂程......

好学的小李的博客 1万+

CMake入门教程【基础篇】在Windows、Linux上安装CMake

CMake如何下载与安装

小鱼酱的博客 2725

【DaVinci Developer专题】-8-创建一个枚举Enum ADT(Application Data Type)

目录 1 创建一个枚举Value ADT(Application Data Type) 1.1 命名application data type 1.2 创建一个computation method计算方法属性 1.3 创建一个Contraint约束条件属性 2 创建了一个新的Type Mapping Sets 3 创建了一个S/R Port Interface 4 SWC引用Type Mapping set 5 导入CFG生成代码的总结 6 结尾 <--返回「实战篇」博文-总目录-

「汽车电子助手」的博客 2291

c++学习笔记整理

黑马cpp学习笔记整理

qq_43157097的博客 2383

PMP--二模--解题--161-170

A:邀请团队成员在下一次回顾中分享经验。B:请求发起人增加具有所需经验的团队成员。C:在团队内计划知识共享会议。D:请求发起人为团队提供培训课程。A。

stqer的博客 1268

Pro C/C++学习笔记(一)

Pro C/C++学习笔记(一)

qq_43679402的博客 305

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C/C++学习笔记一

每一个C/C++程序中包含两个文件,一个用于保护程序的声明(declaration)叫头文件,一个用于程序的功能的实现叫定义文件。C/C++程序的头文件后缀都以(XXX.h),对于源文件来说C中后缀(XXX.c),C++中的源文件后缀(XXX.cpp)。 1、头文件的结构分三部分组成 (1)版本版权的声明; (2)预处理块; (3)函数和类结构的声明。 『建议』:不提倡使用全局变量,尽量...

u013924385的专栏 202

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C/C++学习笔记(一)

常量字符串初始化

每天进步一点点 946

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Pro*C/C++ 学习笔记(一)

一. Pro*C简介       关键字:Oracle 预编译工具 SQL语句和PLSQL块 高级编程语言       Oracle为应用开发人员所提供的许多预编译工具,如Pro*C,Pro*COLBOL,Pro*FORTURN等Pro*系列工具。通过使用这些预编译工具,Oracle允许应用开发人员在高级编程语言中内嵌SQL语句和PLSQL块,从而简化数据库应用程序的开发难度,而其中Pro*C

dupu1的专栏 1827

C/C++学习笔记(一)

c/c++学习笔记记录

Chen_p_j的博客 248

C/C++学习笔记 基础入门系列(一)

说在前面的话 C++学了一段时间了,现在在整理笔记,作为备份和分享,会一点点的连载上来,如果此时的你在看这篇文章,而且想学C/C++,本篇系列文章或许能帮助你打基础,为了方便大家,代码我也直接码在上面了,如果复制粘贴都懒得做的话,过段时间我会把整理好的代码打包传到下载里面。 序、学习环境 VS2017 Windows10 PS:怎么安装这里就不说了 一、初识C++ 1.1 第一个HelloW...

StriverLite的博客 836

Pro *C/C++学习笔记(一)

                                                                                     朱金灿      上周六无事,抽空学习了一下Pro *C/C++,使用的参考书是《精通Oracle 10gPro*C/C++编程》。个人感觉Pro *C/C++语法不难,就是环境设置有点麻烦。编程就是这样,开头是一个坎,编

clever101的专栏 3万+

[Linux/C/C++ 学习笔记]系列 4. POSIX标准(一)简介

POSIX标准(一)简介

weixin_51226279的博客 1139

2022考研机试复习——C/C++学习笔记(一)

2022考研机试复习——C/C++学习笔记(一) 目录2022考研机试复习——C/C++学习笔记(一)起步一、基本数据类型变量类型整型浮点型字符型字符串常量布尔型常量定义二、顺序结构scanf与printfgetchar与putchartypedef常用的math函数三、选择结构四、循环结构五、数组一维数组初始化基本方法使用memset对数组中每一个元素赋相同的值数组顺推冒泡排序二维数组字符数组字符数组的初始化字符数组的输入输出字符数组的存放方式string.h头文件sscanf()和sprintf()六、

爪哇男孩的博客 1420

C/C++学习笔记(语法篇) 一、printf scanf

C/C++学习笔记(语法篇) 一 printf() 格式化输出 使用逗号将参数分隔开 使用%d来打印整数,使用%04d来控制宽度 使用%f来打印小数,使用%.4f来控制小数点后位数 int型:整数; double型:小数 int a = 1; int d = 2.34; printf("abc\n"); printf("a:%d,b:%03d\n",23,a); printf("a:%f,b:%.3f\n",23.3,d); scanf() 从控制台接收用户的输入 int n; scanf("%d",

weixin_42040046的博客 305

c/c++学习笔记一(2006/11/14)

 C/C++学习笔记一(2006/11/14)1、#ifndef:   指示符#ifndef用来检查头文件的内容是否在前面已经被定义过,如果定义过,则#ifndef与#endif之间的语句将不被执行.所以习惯上要把头文件的定义写在这两个语句之间.如:对于MYHEAD.H这个头文件#ifndef MYHEAD_H#define MYHEAD_H#include "myhead.h

【小妮的天空】 881

(C/C++学习笔记) 一. 基础知识

一. 基础知识 ● 程序和C/C++ 程序: 根据Wirth (1976), Algorithms + Data Structures = Programs. Whence C: 1972, Dennis Ritchie[ˈritʃi](丹尼斯·里奇), 贝尔实验室(Bell Labs), C语言是他和Ken Thompson在设计Unix操作系统时创建...

aa123kk78011的专栏 306
下一篇: code::block编译错误#error This file requires compiler and library support for the \ ISO C++ 2011 standar
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值