sizeof与strlen

嵌入式工程师必学(52):储能系统ESS 能量存储系统(ESS,Energystoragesystems)存在于各种各样的尺寸、形状和技术中。储能系统的技术,即基本的储能机制,自然会影响其重要特性,包括成本、安全性、性能、可靠性和寿命。然而,尽管基础技术很重要,但一个成功的储能项目依赖于对该技术的彻底和深思熟虑的实施,以实现项目的目标。成功的实施取决于储能系统的架构和组装情况。系统的体系结构可以决定其性能和可靠性,与它所使用的技术一致,甚至与之无关。 阅读详情
一、sizeof的概念 
  sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型定。 


二、sizeof的使用方法 

1、用于数据类型 
sizeof使用形式:sizeof(type) 
数据类型必须用括号括住。如sizeof(int)。 
  
2、用于变量 
sizeof使用形式:sizeof(var_name)或sizeof var_name 
变量名可以不用括号括住。如sizeof (var_name),sizeof var_name等都是正确形式。
注意:sizeof操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未知
存储大小的数据类型。如未知存储大小的数组类型、未知内容的结构或联合类型、void类
型等。 
  注意:sizeof 操作数为用户定义类型时,要考虑到对齐问题:
联合类型操作数的sizeof是其最大字节成员的字节数。结构类型操作数的sizeof是这种类型对象的总字节数包括任何垫补在内。   
  如:struct 
{     char b; 
      double x;
} a; 
  
vc6.0结果为16。
这是因为编译器在考虑对齐问题时在结构中插入空位以控制各成员对象的地址对齐。
如double类型的结构成员x要放在被8整除的地址。
可以通过#pragma pack(n)改变字节对
齐。 
例如: 
struct mystruct1
{  
    
char a;             //1 
    
int b;               //4 
    
short c;           //2 
    
long d;            //4 
    
double e;        //8 
}; 
默认的结构体的sizeof结果是24。
 
#pragma pack(2) 
struct mystruct1
{  
    char a;             //1 
   
 int b;               //4 
    
short c;           //2 
    
long d;            //4 
    
double e;        //8 


}; 
此时结果为20。 所以,默认时以最大字节作为存储单位,即8字节.而对齐方式则以两两之间的最大字节对齐,比如char与int以4字节对齐,占用了一个8字节空间,short重新开始一个8字节空间,short与long以4字节对齐,再结合成一个8字节空间,同时double单独占用一个8字节空间.所以最后总空间为24字节。 
    
改变对齐方式为2字节时,则char以2字节后接int的2个2字节,再接short的2字节,再接long的2个2字节最后接double的4个2字节,此时计算总数为2字节 *  (1+2+1+2+4)= 20字节。
三,strlen与sizeof的区别
1.从功能定义上:strlen函数用来求字符串的长度,sizeof函数是用来求指定变量或变量类型等所占用内存的大小.
2.sizeof是运算符,而strlen是C库函数strlen只能用char*做参数,且以'/0'结尾的.


对于静态数组处理: 

char str[20]="0123456789"; 
strlen(str)=10;   //表示数组中字符串的长度 
sizeof(str)=20;   //表示数组变量分配的长度 
  
对于指针处理:
char *str="0123456789"; 
strlen(str)=10;     //表示字符串的长度 
sizeof(str)=4;      //表示指针变量的所占内存大小 
sizeof(*str)=1;     //表示'0'这个字符变量的所占内存大小 
AI辅助决策支持系统架构设计避坑:5个常见技术选型误区及正确方案 AI辅助决策支持系统(AI-DSS)是指通过人工智能技术(机器学习、自然语言处理、知识图谱等)赋能传统决策支持系统,帮助决策者在复杂业务场景中(如供应链优化、风险控制、医疗诊断、金融投资等)提升决策效率和准确性的系统。与传统BI工具不同,AI-DSS不仅能"展示数据",还能基于数据生成"决策建议"甚至"自动执行决策"。技术选型是AI-DSS架构设计的核心环节,涉及数据处理引擎、模型框架、算力资源、集成接口等关键组件的选择。效果不达标:模型预测精度低、决策建议不可用;成本失控:算力资源浪费、维护成本高企。 阅读详情

相关推荐

Look4sat蓝牙追星云台

//这是一个追星云台的小程序 //配合Look4sat蓝牙传输数据(W*** A***),并让电机做出动作 //app设置内填好ESP32的蓝牙MAC,数据格式:W$AZ A$EL //希望大家可以共同改进

HoyAnGx的博客 617

C语言中strlen和sizeof的区别

C语言中,strlen和sizeof使用时的区别和使用方法

川子767的博客 1万+

Vivado新手避坑指南:搞懂Generate Output Products和Create HDL Wrapper到底在干啥

本文深入解析Vivado设计流程中的Generate Output Products和Create HDL Wrapper两大关键步骤,帮助新手理解其核心功能与操作要点。通过详细讲解文件生成类型、关键选项设置及常见问题解决方案,指导开发者正确使用这两个功能,避免设计流程中的常见错误,提高FPGA开发效率。

weixin_29207149的博客 312

sizeof()和strlen的区别

首先得区别清楚: sizeof()是运算符,在头文件的类型为unsigned int,其运算值在编译时就计算好了,参数可以是指针、数组、类型、对象和函数等; strlen()是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化为指针了。该函数完成的功能是从代表该字符串的第一个地址开始遍历的,直到遇到结束符NULL。返回的长度大小不包括NULL。 ...

Victor的BLOG 1万+

ZYNQ新手必看:你的PS端DDR和QSPI配置真的对了吗?从原理到实操的避雷指南

本文深入解析ZYNQ PS端外设配置的关键要点,特别是DDR匹配和QSPI时钟优化的实战技巧。通过详细案例和配置清单,帮助开发者避免常见错误,确保系统稳定性和启动可靠性。适合ZYNQ新手和需要优化最小系统的开发者参考。

weixin_28675839的博客 446

onnxruntime-gpu版本选择与CUDA环境配置实战指南

本文是onnxruntime-gpu版本选择与CUDA环境配置的实战指南。针对AI模型部署中常见的GPU无法调用问题,核心在于确保onnxruntime-gpu版本与系统CUDA Toolkit版本严格匹配。文章详细讲解了如何精准确定CUDA版本、查找官方对应关系、执行正确安装命令,并通过完整测试脚本验证GPU是否成功启用,最后提供了常见问题排查与生产环境调优建议。

weixin_29164091的博客 523

【C语言】sizeof和strlen的区别

sizeof和strlen的到底有啥区别,怎么用呢?

学了就忘是正常现象 3716

hpm6750evk2开发板(一)菜鸟入门

hpm6750与我们平时常用的stm单片机在开发环境和开发方法上有很大的区别,所以上手还是需要花一点时间的,拿到板子先不要急着上电调试,我们先找资料学习一下了,免得多走冤枉路,以下是我整理的一些学习资源,包括开发板使用手册、芯片SDK、开发工具、视频资料等,建议先把使用手册和学习视频先看了,再取搭建环境测试。最近刚入手一块hpm6750evk2开发板,花了几天时间学习,算是菜鸟入门了,今天分享一下学习过程。看完资料后,把开发工具安装上,下一篇文章我们分享一下调试工程的过程和遇到的问题。

Silas1750的博客 3086

sizeof和strlen的小知识

C语言小知识

2401_84577633的博客 1639

关于海康网络摄像头使用VLC或者Opencv拉流有延迟的问题

先说结论,我用VLC或者Pyhton opencv直接拉取海康网络摄像头的rtsp流,会有1-2s延时,特别明显。环境:Windows + VLC / Openc-Python。如上面文章介绍,我使用的时候遇到一处错误,需要把代码中的。海康SDK:与网页视频相比,几乎是同步的。上面说的延时,也是与摄像头网页视频相比的。ffplay 去掉缓存:延时1s左右。这两处地方改成左斜杠,才能运行。opencv拉流使用的是。多线程:延时1s左右。

yljxh的博客 4500

Trustzone/TEE/安全 面试100问-目录

关键词:cache学习、mmu学习、cache资料、mmu资料、arm资料、armv8资料、armv9资料、 trustzone视频、tee视频、ATF视频、secureboot视频、安全启动视频、selinux视频,cache视频、mmu视频,armv8视频、armv9视频、FF-A视频、密码学视频、RME/CCA视频、学习资料下载、免费学习资料、免费 周贺贺,baron,代码改变世界ctw,Arm精选, 资深安全架构专家,十年手机安全/SOC底层安全开发经验。擅长trustzone/tee安全产品的设计

baron-周贺贺-代码改变世界ctw 651

关于sizeof和strlen和数组

你真的了解sizeof和strlen吗?

wz_290793的博客 1462

4、基于STM32 NUCLEO - F030R8开发板的嵌入式编程入门

本文详细介绍了如何在STM32 NUCLEO-F030R8开发板上实现LED闪烁功能,作为嵌入式编程的入门实践。内容涵盖开发板组成、跳线设置、项目创建、代码编写与解析、编译运行步骤,以及常见问题解决方法和拓展应用。通过本文学,习者可以掌握嵌入式开发的基本流程,并为后续深入学习打下基础。

m9n0o的博客 84

strlen与sizeof的区别

在了解strlen与sizeof的区别之前,先来了解下字符数组: char a[] = {‘C’,’+’,’+’,};//不含空字符’\0’。 char a1[] = {‘C’,’+’,’+’,’\0’};//显式包含空字符’\0’。 char a2[] = “C++”; //自动添加 ‘\0’字符串结束的空字符 a1=a2。 char a3[4] = “C++”;//错误,没有空间存放空字符’...

c+c++的博客 5937

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

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Sizeof与strlen区别以及用法

Sizeof与strlen区别以及用法 Sizeof Sizeof是函数还是关键字呢? 答:关键字,它是一个“披着函数皮的关键字”。做我的关键字,让人家认为是函数去吧。 为什么说是关键字呢?看看下面分析:我们借助编译器确认它的身份。 看下面的例子。示例选择题如下: int i = 10; A:sizeof(int) B:sizeof(i) C:sizeof int D:size

weizhengbo的博客 523

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

sizeof() 与 strlen()的区别

深入理解sizeof作者:房秉毅  最近在论坛里总有人问关于sizeof的问题,并且本人对这个问题也一直没有得到很好的解决,索性今天对它来个较为详细的总结,同时结合strlen进行比较,如果能对大家有点点帮助,这是我最大的欣慰了。一、好首先看看sizeof和strlen在MSDN上的定义:首先看一MSDN上如何对sizeof进行定义的:sizeof Operatorsizeof exp

Louis的专栏 2493

sizeof与strlen的区别

char str[20]="0123456789"; int   a=strlen(str); /*a=10;strlen 计算字符串的长度,以为字符串结束标记。 int   b=sizeof(str); /*b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响========================================

深度Java 8万+

sizeof和strlen

sizeof是一个关键字而不是函数,求出传入的操作数所占的字节数; strlen是的一个库函数,求字符串长度; sizeof传入字符串时,要一直找到字符串末尾,包括\0在内; strlen遇到第一个\0为止,不算\0在内; sizeof可以计算各种类型的字节数:各种内置类型,指针等; strlen必须传入char* 二者都用于字符串时,容易混淆;毕竟只有sizeof可用于其他各种类型,而strlen只能用于字符串; 字符串由多种表示: char* p = "lixu"; char a [ ] = ".

Jiu_R的博客 838

sizeof和strlen的区别

sizeof 是操作符,sizeof 计算变量所占内存内存空间⼤⼩的,,如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的⼤⼩。sizeof 只关注占⽤内存空间的⼤⼩,不在乎内存中存放什么数据。

m0_69135494的博客 789

sizeof 和 strlen 的对比

本篇文章主要围绕着sizeof和strlen展开叙述,主要目标是了解这两个的用法,注意事项,以及辨析两者间的区别。

Alenenen的博客 843

sizeof 和 strlen 的区别

它只用于以 '\0' 结尾的字符数组(C风格字符串),例如 char str[] = "hello";strlen(str) 返回的值是5。1. 在C语言中最好使用 %zd 来输出 strlen 和sizeof的结果- 原因是 strlen 函数(定义在 <string.h> 头文件中)的返回值类型是 size_t。size_t 是无符号整数类型,通常用于表示大小相关的量,如对象大小、计数等。- 例如:c 复制return 0;

daiwoliyunshang的博客 866

sizeof,sizeof与strlen的区别

sizeof是一个关键词也是操作符,专门用来计算类型或者变量大小,其实sizeof也可以计算数组的大小,单位都是字节。sizeof操作符的操作数可以是类型,也可以是变量或者表达式。sizeof(类型)sizeof 表达式sizeof运算符的返回值,C语言只规定是无符号整数,并没有规定具体的类型,而是留给系统自己去决定,sizeof到底返回什么类型。

wait___wait的博客 1169

sizeof和strlen的对比分析

本文对比了C语言中sizeof运算符和strlen函数的关键区别。sizeof是编译时运算符,用于计算变量或类型的内存大小(含空字符),适用于任意数据类型;strlen是运行时库函数,统计字符串中'\0'前的字符数(不含空字符),仅适用于字符串。主要差异体现在:sizeof计算数组时包含整个空间,而strlen只计有效字符;对指针使用sizeof得到指针大小,strlen则计算指向的字符串长度。正确理解二者的特性可避免内存和字符串处理错误,注意strlen要求字符串必须正确终止,否则会导致未定义行为。

祯的博客 1050

sizeof和strlen的联系与区别

Sizeof与Strlen的区别与联系(转)1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。sizeof还可以用函数做参数,比如: short f...

Hanani_Jia的博客 665

【C语言】_sizeof与strlen

int型+int型得到int型,而后截断为short型,故sizeof(s=a+2)即sizeof(s)即sizeof(short)=2;2、由于常量字符串末尾隐藏一个'\0',strlen统计的是strlen函数的参数str这个地址至'\0'前字符串中字符的个数;,当程序运行时,sizeof已完成了对表达式结果所占内存的推断,运行时自然无法再计算表达式的结果;对于字符数组,\0的位置未知,故使用strlen计算得到的是随机值;当操作数为类型时,计算得到使用该类型创建的变量所占内存空间的大小;

m0_63299495的博客 1130
上一篇: 单链表,可变参数函数
下一篇: 枚举与宏
FOLORO
博客等级 码龄10年 3粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值