strlen和sizeof对比

Unity3D Pico VR 手势交互实战:基于MRTK3实现抓握与射线控制 本文针对Pico VR原生手势交互功能不足的问题,提供了基于MRTK3实现高级手势交互的实战解决方案。通过将MRTK3成熟的交互框架与Pico的手势追踪能力相结合,详细讲解了从环境配置、SDK导入、核心适配到真机调试的全流程,帮助开发者高效实现抓握与射线控制等复杂交互,有效提升Pico VR应用的开发效率与体验。 阅读详情

sizeof( )是运算符

功能:获得类型或表达式的最大对象的字节大小。

sizeof()可以计算数组、指针、类型、对象、函数
数组——编译时分配的数组空间大小;
指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,32位操作系统应该为4);
类型——该类型所占的空间大小;
对象——对象的实际占用空间大小;
函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。

#include <iostream>

int main()
{
	int a = 1;
	int b[10] = { 0 };

	int* pa = &a;
	int* pb = b;

	std::cout << "int类型的a:"<<sizeof(a) << std::endl;
	std::cout << "int类型的数组b:"<<sizeof(b) << std::endl;
	std::cout <<"整型指针pa:"<< sizeof(pa) << std::endl;
	
	
	std::cout << "char:"<<sizeof(char) << std::endl;
	std::cout << "float:" << sizeof(float) << std::endl;
	std::cout << "double:" << sizeof(double) << std::endl;

	std::cout << "short:" << sizeof(short) << std::endl;
	std::cout << "int:" << sizeof(int) << std::endl;
	std::cout << "long:" << sizeof(long) << std::endl;


	std::cout << "main():" << sizeof(main()) << std::endl;
	system("pause");
	return 0;
}

在这里插入图片描述

strlen()是函数

功能:strlen 测量的是字符的实际长度,以’\0’ 结束,不包括’\0’在内,参数必须是char*,strlen所作的仅仅是一个计数器的工作。

#include <iostream>

int main()
{
	char b[10] = { 1 };

	std::cout << strlen(b) << std::endl;

	system("pause");
	return 0;
}

在这里插入图片描述

strlen()和sizeof()的区别

  1. strlen 是函数,sizeof 是运算符。
  2. strlen 测量的是字符的实际长度,以’\0’ 结束。而sizeof 测量的是字符的分配大小。
    比如:
char str[20] = "hello";
 
printf("strlen: %d\n", strlen(str));
printf("sizeof: %d\n", sizeof(str));

结果是:

[root@localhost 0703]# ./hello 
strlen: 5
sizeof: 20

3、但是在子函数中,sizeof 会把从主函数中传进来的字符数组当作是指针来处理。指针的大小又是由机器来决定,而不是人为的来决定的。

#include <iostream>

void size_of(char str[])
{
	printf("sizeof:%d\n", sizeof(str));
}

int main()
{
	char str[20] = "hello";

	size_of(str);

	system("pause");
	return 0;
}

在这里插入图片描述
4、strlen()函数是一个计数器的作用,遇到'\0'结束,当初始的数组没有’\0’,结果不可预料。

#include<iostream>
int main()
{
	char str1[] = "hello";
	char str2[] = { 'h', 'e', 'l', 'l', 'o', '\0' };
	char str3[] = { 'h', 'e', 'l', 'l', 'o' };

	printf("str1:%s\n", str1);
	printf("str2:%s\n", str2);
	printf("str3:%s\n", str3);
	printf("str1:%d\n", strlen(str1));
	printf("str2:%d\n", strlen(str2));
	printf("str3:%d\n", strlen(str3));

	system("pause");
	return 0;
}

在这里插入图片描述
str3初始化没有'\0',这个程序越界访问,只是编译器没有报错。
5、sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以’’\0’‘结尾的。
6、sizeof()计算的是操作系统给该参数开辟的内存空间的大小,在char*类型中包括’\0’,strlen()计算的是实际所占的字符长度,不包括'\0'或者NULL。

例如:

#include<iostream>
int main()
{
	char str[] = "hello";

	std::cout << "strlen:"<<strlen(str) << std::endl;
	std::cout << "sizeof:"<<sizeof(str) << std::endl;

	system("pause");
	return 0;
}

结果为:

strlen:5
sizeof:6
请按任意键继续. . .
【49】Camunda8-Self-Managed部署之Docker方式 围绕camunda8 self-managed,介绍了基于Docker部署相关服务的过程。 阅读详情

相关推荐

COMSOL实战:如何用有限元法(FEM)准确仿真电磁场问题?避坑指南

本文是一份COMSOL电磁场仿真实战指南,重点讲解如何运用有限元法(FEM)准确模拟电磁场问题。文章通过矩形波导和偶极子天线两大经典案例,详细剖析了从几何建模、物理场设置、网格剖分到结果验证的全流程,并提供了处理非线性材料、求解器收敛失败等高级问题的避坑技巧,旨在帮助工程师建立可靠的仿真工作流。

weixin_29297127的博客 514

sizeof问题

晴天的专栏 794

MySQL 优化 - index_merge 导致查询偶发变慢

今天遇到了一个有意思的问题,线上数据库 CPU 出现了偶发的抖动。定位到原因是一条查询语句偶发变慢造成的,随后通过调整表中的索引解决。优化器通过某种机制检测到 index_merge 能带来性能提升,某些情况下不会带来提升,反而会耗费更长的时间,属于优化器的缺陷,可以通过调整表中的索引来解决。

分享既学习 1255

sizeof和strlen使用技巧

1.介绍相同点: sizeof和strlen都可以计算字符串的长度。不同点: sizeof:是运算符 strlen:是函数 2.举例**a.例如,定义如下:** char *info = "hello,si mida!!\n" 问: 给info字符串指针用malloc动态分配内存空间最好用sizeof还是strlen? 答案是最好用strlen。

Fire的博客 699

保姆级避坑指南:用Livox官方工具搞定Mid-360多雷达自动标定(附源码Bug修复)

本文详细解析了使用Livox官方工具进行Mid-360多雷达自动标定的全流程,包括环境搭建、工具链配置、关键Bug修复及数据采集最佳实践。重点解决了PointCloudMapper.cpp边界检查缺失和calibration.cpp点云显示问题,提供了实用的代码修复方案和标定质量评估指标,帮助开发者高效完成激光雷达标定任务。

weixin_29053695的博客 281

SNN系列|编码篇(2)时序编码

Tempotral Coding 选择编码方法是要根据编码对象以及模型如何处理编码信息进行选择,如下是一种时序信息的编码对比: Threshold-based encoding 又称为tempotral contrast,该方法可以用于编解码一段序列,当差值超过阈值时发放脉冲,阈值是根据编码的序列自适应变化的。 使用该编码方法时,实值序列最好是沿时间变化的,因为在根据差分决定是否发放脉冲后,脉冲的顺序与差分顺序有关。 Time-to-first spike coding 该编码方法将信息用神经元首次

Tianlong Lee的博客 1万+

谈谈c语言中的sizeof

在这个示例中,我们使用sizeof运算符来获取整数类型(int)和浮点类型(double)的大小,以及变量x和变量y的大小,以及数组的大小。可以看到,对于整数类型和浮点类型,sizeof返回的大小是8字节和4字节,分别对应于64位系统和32位系统的内存对齐要求。对于变量x和变量y,sizeof返回的大小也是4字节和8字节,这是因为变量x是整数类型,变量y是浮点类型。sizeof运算符主要用于在编译时确定特定类型或对象的大小,它返回的是类型或对象在内存中的字节数。

ACBC12345的博客 447

Jaspersoft Studio 6.20.0 免注册安装指南(附下载链接)

本文提供了Jaspersoft Studio 6.20.0社区版的免注册安装详细指南。文章介绍了绕过官网注册获取安装包的多种可靠途径,并逐步详解了从启动安装器到首次运行的全过程,帮助用户快速完成安装与基础配置,高效开启报表设计工作。

mars5的博客 1697

sizeof()详解

作者:csdn饼子堂 50米公主1、什么是sizeof首先看一下sizeof在msdn上的定义:The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a

天道 1214

Docker部署Nextcloud私有云:MariaDB、OnlyOffice与HTTPS全栈实践

Nextcloud作为主流开源私有云平台,其稳定部署依赖Docker容器化、MariaDB数据库优化、OnlyOffice在线协作集成及HTTPS安全加固四大核心技术。理解Docker Compose服务健康检查机制与依赖等待原理,可避免因启动时序导致的500/404错误;掌握MariaDB字符集配置与InnoDB参数调优,是保障Nextcloud全文搜索与大文件上传可靠性的底层基础;而OnlyOffice的JWT兼容性控制与Nginx路径重写规则,则直接决定文档协同功能是否可用。在家庭NAS、边缘服务器或

weixin_30328063的博客 515

YOLOv9原创自研:卷积魔改 | 一种新颖的风车形卷积(PConv)融合注意力机制,加强微弱小目标检测能力

为了进一步提升小目标检测能力,风车形卷积(PConv)融合注意力机制进一步提升小目标检测能力

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 363

C语言比较大小耗很长时间吗,用sizeof求类型长度咋搞、、、困惑我好长时间了、、...

该楼层疑似违规已被系统折叠隐藏此楼查看此楼输入类型名 得到类型所占字节数。利用其他的方法可以实现。不过直接把输入作为sizeof的参数是不可以的。直接传过去的是一个字符串,既不是关键字,也不是(除了字符串以外的变量)变量名字。返回的是这个常量字符串所占的字节数。只能是预先把各种关键字作为sizeof的操作数,得到结果。然后根据用户的选择,来进行相应的输出。最简单的。可以利用switch分支。比...

weixin_35219482的博客 265

Android SELinux——neverallow问题处理(十六)

遇到 neverallow 规则问题,千万别急着去注释/剔除里面原有的规则(原生的尽量别动)。增加 allow 规则是常见的解决办法,但是随着 android 版本的升级,系统对 SELinux 的管控越来越严,增加了大量的 neverallow。一般情况下,向默认标签授予权限的做法是错误的,其中许多权限都是 neverallow 规则所不允许的。按照上面方法去添加 SELinux 可能会违反了 neverallow 规则,编译时候会报 neverallow 相关的错误。

小旭的专栏 2685

sizeof和strlen的对比分析

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

祯的博客 1050

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

sizeof与strlen()函数的对比总结

strlen 是C语⾔库函数,功能是求字符串⻓度。统计的是从 strlen 函数的参数 str 中这个地址开始向后, \0 之前字符串中字符的个数。strlen 函数会⼀直向后找 \0 字符,直到找到为⽌,所以可能存在越界查找。

吴先生的博客 1069

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

sizeof 和strlen的对比

sizeof 和strlen的对比及数组和指针笔试题解析

我爱我想但不嫉妒 我哭我笑但不抱怨 我羞我愧但不悲叹 我怒我恨但不自弃 1145

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

sizeof和strlen的对比

sizeof()函数是用来计算变量内存空间大小的函数,单位是字节。如果计算的是操作数类型的话,计算的就是类型创建的变量所占内存的大小。(sizeof()只关注内存大小,不在乎内存中存放的数据)。统计的是从strlen()函数的参数str中这个地址向后,'\0'之前的字符串个数。strlen()函数会一直向后找'\0'字符,直到找到为止,所以可能存在越界访问。3.关注内存中是否有'\0',如果没有就会继续向后寻找,可能会存在越界。2.srtlen是求字符串长度的,统计的是'\0'之前的字符个数。

Ripple12312的博客 302

sizeof与strlen对比

本文是小编巩固自身而作,如有错误,欢迎指出!

2401_85487070的博客 945

【C语言】指针进阶之sizeof和strlen函数的对比

学习C语言sizeof与strlen函数的基本内容与使用以及区分它们

Renswc的博客 1592

sizeof总结并于strlen对比~

sizeof总结并于strlen对比 一、sizeof总结 在C/C++中,sizeof是一个判断数据类型或者表达式长度的运算符。其作用好像类似于strlen()函数,但是两者还是有所不同。 The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type(includin...

Zhang_1218的博客 570

深入理解指针(4)——sizeof和strlen的对比

sizeof 计算变量所占内存内存空间⼤⼩的,单位是字节,如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的⼤⼩。统计的是从 strlen 函数的参数 str 中这个地址开始向后, \0 之前字符串中字符的个数。3. 关注内存中是否有 \0 ,如果没有 \0 ,就会持续往后找,可能会越界。2. srtlen是求字符串⻓度的,统计的是 \0 之前字符的隔个数。sizeof 只关注占⽤内存空间的⼤⼩,不在乎内存中存放什么数据。2. sizeof计算操作数所占内存的⼤⼩,单位是字节。

weixin_65244731的博客 430

sizeof 和 strlen 的对比

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

Alenenen的博客 843

strlen与sizeof对比

括号中有表达式时,表达式不参与计算,因为表达式在运行时才会计算,而sizeof()是在编译时就进行计算。的字符个数,遇到'\0'就停止。使用时需要包含库文件<string.h>。,它只在乎存放数据占用内存的大小,不在乎内容。,它是用来求字符串长度的。1、sizeof是一个。

2302_80962045的博客 137

学习字符函数strlen&模拟实现strlen,strlen和sizeof的对比

函数参数是字符串/数组的首元素的地址,被const修饰意味着不能通过(*str)解引用指针修改所传入的字符串的具体元素。第二个3是3个字节arr1中只有3个char类型的元素,一个char类型占1个字节。4是4个字节的意思,其中3个字节arr1中只有3个char类型的元素(abc),还有一个字节是\0。注意:strlen函数返的是字符串结束标志:“\0”,之前的字符的个数;如果没有所定义的字符串没有结束标志,那么strlen一直寻找,直到找到字符串结束标志:“\0”,为止。(可能会越界访问)(情况1,2)

努力学习C、C++、Linux等! 1188
上一篇: Centos系统中文设置
下一篇: GitHub使用教程
平头哥阿威
博客等级 码龄9年 509粉丝 175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值