广州市网站建设在哪里/nba录像回放
sizeof和strlen有什么区别?
sizeof本质是运算符(sizoof既是关键字也是运算符,不是函数哈),而strlen就是函数。sizeof后面如果是类型,则必须加括号,如果是变量,可以不加括号。
sizeof运算符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能够容纳实现所建立的最大对象的字节大小。
sizeof可以用类型作为参数,而strlen只能用char * 作为参数,而且必须是以\0结尾的。sizeof还可以以函数作为参数,如int test(),则sizeof(test())的值等于sizeof(int)的值,在32位计算机下,该值为4。
大部分编译程序的sizeof都是在编译的时候计算的,所以可以通过sizeof(x) 来定义数组维数,通常用来计算占用内存大小。而strlen则是在运行阶段计算的,用来计算字符产的实际长度。
如:
char str[20] = “0123456789”,字符数组str是编译期大小已经固定的数组,在32位计算机下,sizeof(str) = 20,而strlen是在运行期计算的大小,strlen(str) = 10。
思考:
不使用sizeof,怎么求int占用的字节数?
#define my_sizeof(value) (char *)(&value + 1) - (char *)(&value)
&value 表示获取变量 value 的地址。(char )(&value + 1) 表示获取变量 value 后面一个元素的地址,通过将其强制转换为 char 类型来确保以字节为单位进行计算。最后,用 (char *)(&value + 1) - (char *)(&value) 来计算两个地址之间的差值,得到变量 value 的大小。
这个宏定义是一种快速获取变量大小的方法,但在某些特殊情况下可能会有限制。(如包含了 padding 的结构体、指向函数的指针等),可能会导致计算结果不准确。
Tips:
- size_t 是 C 和 C++ 中用于表示内存大小和对象大小的无符号整数类型,在处理内存和数组相关的操作时非常重要。
- sizeof 运算符在编译时求值,而不是运行时。它的结果在编译时就确定了,不会因为变量的具体取值而改变。此外,sizeof 运算符不能用于动态分配的内存或函数类型。
- 在 32 位计算机上,指针类型的大小通常为 4 字节(32 位)。这是因为 32 位的寻址范围为 2^32,即 4GB,因此一个指针占据 4 字节的内存空间来存储一个地址。
而在 64 位计算机上,指针类型的大小通常为 8 字节(64 位)。这是因为 64 位的寻址范围为 2^64,即非常大,需要 8 个字节来存储一个地址。
相关文章:

C语言sizeof和strlen的区别?
sizeof和strlen有什么区别? sizeof本质是运算符(sizoof既是关键字也是运算符,不是函数哈),而strlen就是函数。sizeof后面如果是类型,则必须加括号,如果是变量,可以不加括号。 sizeof…...

小文智能GPT助手介绍
如何使用小文交互的GPT助手,让AI更加智能,适用更多场景? 在小文智能最新推出的4.0版本,有一个新功能,叫做GPT助手。GPT助手,顾名思义,即在小文智能的场景中,接入ChatGPT,…...

SpringBoot使用i18n国际化
使用的SpringBoot版本是2.3.5 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.5.RELEASE</version><relativePath/> </parent> 一、简单测试…...

Jmeter的自动化测试实施方案
前言: Jmeter是目前最流行的一种测试工具,基于此工具我们搭建了一整套的自动化方案,包括了脚本添加配置、本地配置和运行、服务器配置等内容,完成了自动化测试闭环,通过这种快捷简便高效的方式,希望可以解…...

nginx优化相关
https://blog.csdn.net/liuxiao723846/article/details/46862381 Nginx反向代理,当后端为Https时的一些细节和原理_nginx反向代理https_赶路人儿的博客-CSDN博客 nginx - 寒星12345678999 - 博客园 (cnblogs.com)...

美客多(mercadolibre)测评下单技术(养号环境搭建详解)
MercadoLibre(美客多)是拉丁美洲的一个网购平台。该公司为其客户提供电子商务交易的购买,出售,支付和收集机制。目前全球第十大电商市场——巴西是MercadoLibre的主要市场,占据近60%的平台营收,接着是阿根廷…...

UE5- c++ websocket客户端写法
# 实现目标 ue5 c 实现socket客户端,读取服务端数据,并进行解析 #实现步骤 {projectName}.Build.cs里增加 "WebSockets","JsonUtilities", "Json"配置信息,最终输出如下: using UnrealBuildTool;…...

C语言——函数的使用
无参无返回值 语法格式如下: // 函数定义 void 函数名() {函数体 }// 函数调用 函数名();函数名是标识符的一种,需要遵循规则函数只需要定义一次,反复调用只定义函数, 不调用函数, 函数永远不会被执行案例需求: 编写一个函数&am…...

DVWA XSS
反射型 low 查看源代码,没有任何过滤 构造 medium 这里是过滤了 high 这里把双写和大小写和JavaScript都过滤了,用事件来绕过<img src0 οnerrοralert(“xss”)> impossible 这里使用htmlspecialchars进行实体转换并且输出的结果还不能使用事件来…...

石油化工智慧安监方案:TSINGSEE青犀视频AI智能识别安全生产风险预警平台建设
一、行业背景 石油化工生产存储企业属于高温、高压、易燃、易爆、有毒的危险行业,其生产装置大型化、密集化、生产工艺复杂、生产过程紧密耦合。随着互联网技术的发展,运用先进的AI、物联网、大数据、云计算等技术手段不断提高石油化工行业的安全监管水…...

R语言图形绘制
(1)条形图 > barplot(c(1,2,4,2,6,4,3,5)) > barplot(c(1,2,4,2,6,4,3,5),horiz TRUE) #besideTRUE 表示将多个组别的图形并排显示,使它们在水平方向上对齐 #而当 besideFALSE(默认值)时,多个组别的…...

2023第七届蓝帽杯 初赛 web LovePHP
LovePHP 直接给了源码。 network查看到,PHP版本是7.4.33 题目要求我们GET一个my_secret.flag参数,根据PHP字符串解析特性,PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事: 删…...

Pytorch 的基本概念和使用场景介绍
文章目录 一、基本概念1. 张量(Tensor)2. 自动微分(Autograd)3. 计算图(Computation Graph)4. 动态计算图(Dynamic Computation Graph)5. 变量(Variable) 二、…...

git 基础入门
Git基础入门 Git是一个分布式 版本管理系统,用于跟踪文件的变化和协同开发。 版本管理:理解成档案馆,记录开发阶段各个版本 分布式&集中式 分布式每个人都有一个档案馆,集中式只有一个档案馆。分布式每人可以管理自己的档案…...

openssl 生成自签名证书
1、openssl生成CA根证书 1.1、生成CA私钥 openssl genrsa -out root_ca.key 2048 注意:私钥必须妥善保管,既不能丢失,也不能泄露。如果发生丢失和泄露,必须马上重新 生成,以使旧的证书失效。 1.2、通过ca私钥生成pem格…...

微服务dubbo和nexus
微服务是一种软件开发架构风格,它将一个应用程序拆分成一组小型、独立的服务,每个服务都可以独立部署、管理和扩展。每个服务都可以通过轻量级的通信机制(通常是 HTTP/REST 或消息队列)相互通信。微服务架构追求高内聚、低耦合&am…...

uView1.0的Upload组件上传图片
<template><u-uploadref"uUpload":file-list"fileList"accept"image/jpeg,image/png" //允许选择图片文件:sizeType"sizeType":max-size"2 * 1024 * 1024" //限制上传的图片文件最大为 2Moversize"over…...

【LeetCode题目详解】第九章 动态规划part03 343. 整数拆分 96.不同的二叉搜索树 (day41补)
本文章代码以c为例! 一、力扣第343题:整数拆分 题目: 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输…...

半导体制造常用软件工具总结
半导体制造常用软件工具总结 CIM:Computer Integrated Manufacturing 设备自动化,总称MES:Manufacturing Execution System 制造执行系统EAP:Equipment Automation Programming 设备自动化,是MES与设备的桥梁APC&…...

基于Python的IOS自动化测试环境搭建
文章目录 一、测试架构介绍1.1 WebDriverAgent原理分析1.2 tidevice原理分析二、环境安装2.1 iOS 设备安装 WebDriverAgent2.2 安装iTunes2.3 安装tidevice2.4 安装facebook-wda自动化三、操作流程四、Weditor的安装和使用一、测试架构介绍 以下为测试架构原理图 手机端的WDA…...

技术领导力实战笔记25
25|用心做好“鼓励式”管理 激发正能量 授权 分工作: 老人干新事,新人干老事,强者干难事,弱者干细事 新人干老事 所谓新人,是对业务产品不了解,对工作流程不清晰的岗位新人。对于新人来说&…...

设计模式-职责链+反射
文章目录 前言简单版本的职责链加反射职责链反射思路过程总结 前言 最近学习设计模式对于职责链的学习有了一些深入的了解故此有了这篇博客 简单版本的职责链加反射 职责链模式(Chain of Responsibility Pattern)和反射(Reflection&#x…...

Middleware ❀ Kafka功能与使用详解
文章目录 1. 概述1.1. 消息队列1.2. 应用场景1.3. 工作模式1.4. 基础结构1.4.1. 结构组件1.4.2. 数据同步1.4.3. ACK机制1.4.4. 分区机制1.4.4.1. 使用Partition Key写入1.4.4.2. 轮询写入 - 默认规则1.4.4.3. 指定Partition写入 1.4.5. Offset偏移量1.4.5.1. 消息顺序性1.4.5.…...

python3.11教程1:python基础语法、程序控制、函数
文章目录 一、Python简介1.1 为什么学习python1.2 python安装与配置1.3 python解释器1.4 命令行参数1.4.1 sys.argv变量1.4.2 -c和-m选项 1.5 解释器的运行环境1.5.1 编码格式1.5.2 编码声明 二、Python基础语法2.1 行结构2.2 变量(标识符)2.3 字节串2.4…...

【C++】关于using namepace xxx 使用命名空间和冲突
官方定义 namespace是指 标识符的各种可见范围。命名空间用关键字namespace来定义。 命名空间是C的一种机制,用来把单个标识符下的大量有逻辑联系的程序实体组合到一起。此标识符作为此组群的名字。 基本使用 编译及执行命令: g test.cpp -o test ./…...

Linux常用命令——cupsenable命令
在线Linux命令查询工具 cupsenable 启动指定的打印机 补充说明 cupsenable命令用于启动指定的打印机。 语法 cupsenable(选项)(参数)选项 -E:当连接到服务器时强制使用加密; -U:指定连接服务器时使用的用户名; -uÿ…...

基于Stable Diffusion的AIGC服饰穿搭实践
本文主要介绍了基于Stable Diffusion技术的虚拟穿搭试衣的研究探索工作。文章展示了使用LoRA、ControlNet、Inpainting、SAM等工具的方法和处理流程,并陈述了部分目前的实践结果。通过阅读这篇文章,读者可以了解到如何运用Stable Diffusion进行实际操作&…...

【 ARMv9 Cluster BUS QoS 配置】
文章目录 ARM Cluster QoS ARM Cluster QoS QoS(Quality of Service,服务质量)在 ARM 架构中,主要指的是一种机制,它可以控制和管理系统资源(如内存、总线带宽等)的使用,以满足各种…...

简单了解网络基本概念
目录 一、网络含义 二、什么是以太网? 三、网络分类 四、网络架构 五、数据传输方式 六、双工模式 一、网络含义 在实际生活中我们用传输介质把独立的终端设备相互连接起来就构成了网络。 二、什么是以太网? 以太网是一种网络通信协议标准&#…...

网络安全知识库
0x00 前言 本篇用来整理所有的零散的知识,作为一个技能树或者技能表来进行引导 CTF 加解密合集CTF Web合集 0x01 Http 1.http头 1.1 本地访问识别 如何伪造http头,让后端认为是本地访问...