strlen()与sizeof

香橙派5玩转SATA SSD:一个被忽略的overlays配置项,让你的Ubuntu系统飞起来 本文详细介绍了如何在香橙派5上通过配置`overlays=ssd-sata`启用SATA SSD作为系统启动盘,大幅提升Ubuntu系统的性能。文章深入解析了设备树覆盖的工作原理,提供了完整的配置流程和性能优化建议,帮助开发者充分发挥香橙派5的硬件潜力。 阅读详情

c语言没有string类型,字符串的处理使用的是char数组
c会默认在字符串的尾部增加一个'\0',也叫空字符(用来标记字符串的结束),所以字符串真正在内存中占用的字节数会比字符串的字符数多1.

strlen()

我们使用strlen()方法可以获取字符串的长度,也就是包含多少个字符数
然而获取到的这个字符数并不包含尾部被自动追加的'\0'空字符

sizeof

sizeof 这并不是一个方法,而是一个关键字,用来获得类型的大小,或某个量的大小,这里只讨论获取具体量的大小
sizeof获取的是c或者程序员为这个具体量分配了多大的空间(字节数)
以字符串,数组char举例:
声明了一个20大小的字符串:

char name[20];
name = jack;

那么sizeof name获得的大小就是20,而不是jack的字符数4,也不是真是占用内存的字节数5
而strlen(name),方法获得的大小则是4,而不是5或者20

测试源码

#include <stdio.h>
#include <string.h>
#define TEST "i am jack"
int main(void)
{
    char name[20];
    printf("type your name:\n");
    scanf("%s",name);
    printf("name is :%s\n", name);
    printf("sizeof name is : %ld\n", sizeof name);
    printf("strlen name is : %ld\n", strlen(name));
    printf("\n");
    printf("sizeof TEST is : %ld\n", sizeof TEST);
    printf("strlen TEST is : %ld\n", strlen(TEST));
    return 0;
}

输出结果为:

type your name:
jack
name is :jack
sizeof name is : 20
strlen name is : 4

sizeof TEST is : 10
strlen TEST is : 9
基于 高斯过程回归(Gaussian Process Regression, GPR) 的 时间序列区间预测 的 MATLAB 示例代码 阅读详情

相关推荐

应急响应靶场练习Linux-web-2

本次应急响应靶机采用的是知攻善防实验室的Linux-2应急响应靶机靶机下载地址为:相关账户密码: root/Inch@957821.(第一个为大写的i,记住要带最后的点.)1.该攻击者的IP为192.168.20.12.攻击方式应该是通过/index.php?user-app-register上传了一个webshell,然后使用蚁剑管理webshell之后再次上传version2.php进行提权.3.攻击者修改了phpmyadmin数据库的管理员密码。

tddkett的博客 2801

sizeof()和strlen的区别

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

Victor的BLOG 1万+

STM32新手必看:3分钟搞定ST官网资料下载(附F0系列手册+外设库下载技巧)

本文为STM32开发新手提供高效获取ST官网技术资料的完整指南,重点介绍如何快速下载STM32F0系列数据手册和外设库。通过系统性的资源分类解析和实用下载技巧,帮助开发者快速定位所需文档,建立本地知识库,提升开发效率。

ujm5678901的博客 269

C语言中的sizeof()和strlen()的区别

C语言中的sizeof()和strlen()的区别 sizeof()和strlen()经常会被初学者混淆,但其中有有很大区别: 1.sizeof()【操作数所占空间的字节数大小】是一种c中的基本运算符。 可以以类型、指针、数组和函数等作为参数。 头文件类型为unsigned int。 运算值在编译的时候就出结果,所以可以用来定义数组维数。 char a[5]="123"; int b=sizeof(a);//b=5 int c=strlen(a);//c=3 sizeof()是一种单目操作符,是用来计算你

zhaocx111222333的博客 5万+

Zemax操作16--激光谐振腔(含晶体)

谐振腔(含晶体)

lzy750750的博客 8316

ESP8266连接阿里云(STM32)

一、概述 之前通过串口调试助手+ESP8266已经连接上阿里云了 ESP8266连接阿里云(串口调试助手) 这次我们使用STM32+ESP8266来接入阿里云,其实本质上就是STM32和ESP8266进行串口通信,相当于使用STM32代替之前使用的串口调试助手来发送AT指令。只是发送的字符串数据可能有些细节需要注意一下。 二、保存连接的AT指令 定义几个字符串数据保存需要发送的AT指令 //注意: //末尾记得加\r\n //字符...

xyx0610的博客 4万+

strlen()和sizeof()区别

sizeof(brr[0][0]) ->单元格类型所占字节数与一维数组arr[0]含义一致,单个元素的大小。有个误区是,会以为以‘\n’结尾就就不再往后读取了,但是\n并不会作为字符串的结束符,strlen()为下图所示,sizeof()还需要加上结束符'\0',即为9。sizeof(brr) ->数组总字节数,即行和列元素总个数*定义类型的大小。sizeof(arr[0]) ->第一个元素字节数,或者说是单个元素的大小。sizeof(brr[0]) ->第一行元素的总字节数。二维数组brr[][]

qq_53830608的博客 1901

VLA-JEPA:具身智能中潜空间世界模型的工程落地实践

世界模型是具身智能实现环境理解与因果推演的核心基础,其本质是在状态空间中建模‘动作→结果’的动力学规律。传统基于像素或文本的世界模型因高维、非平稳、弱语义等缺陷,在真实机器人场景中鲁棒性差、部署成本高。JEPA(联合嵌入预测架构)通过构建物理约束的潜空间,将视觉-语言-动作(VLA)信号统一编码为低维、可微、可解释的状态表征,显著提升模型对抖动、遮挡、光照突变等干扰的适应能力,并支持实时闭环控制。该范式已在UR5e、Franka等多构型机械臂及Jetson边缘平台完成实测验证,成为VLA系统从实验室走向产线

weixin_34357928的博客 336

C strlen() 和sizeof()

strlen() 是一个函数,求字符串的长度,但是不包括结束符 ‘\0’; size_t strlen(char const *str); sizeof()是一个单目运算符,求的是字符串的大小,包括结束符’\0’; 其参数可以是指针,数组,类型,对象和函数。 下面总结一下,不同情况下strlen()和sizeof()的结果: int main() { char *str = “Hello”; co...

Bigbosss的博客 463

Mac新手必看:nvm安装全攻略(含常见错误解决方案)

本文为Mac开发者提供nvm安装与使用全攻略,涵盖环境准备、安装步骤、Shell配置优化及常见错误解决方案。详细讲解如何利用nvm管理多Node版本,提升开发效率,特别针对国内用户提供网络问题解决技巧,是Mac新手必备的Node版本管理指南。

weixin_28839699的博客 1609

【重识云原生】第四章云网络4.9.5.1节下一代智能网卡——DPU综述

随着数据中心的高速发展,通信能力和计算能力成为数据中心基础设施的相辅相成的两个重要发展方向。若数据中心仅关注计算能力的提升,通信基础设施的提升跟不上,那么数据中心的整体系统性能依然受限,无法发挥出真正的潜力。DPU的提出背景就是应对这些数据量和复杂性的指数级增长。未来,需要将计算移至接近数据的位置,这是目前业界所公认的以数据为中心的体系结构下的创新。综上,DPU对数据中心来说,是通过更明细的分工来实现效率的提升、实现总体系统的成本最优化。...

junbaozi的专栏 1725

知识点——C语言中sizeof()和strlen()的区别

sizeof()和strlen() sizeof() 是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。 strlen() 是C语言C++的函数,是所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含’\0’)。在C/C++中使用strlen函数需要引头文件 #inlcude<string.h> 程序实例:

H48530的博客 1524

光学材料仿真软件:FDTD Solutions_(4).材料属性的定义与应用

在光学材料仿真软件中,材料属性的定义和应用是至关重要的一步。正确地定义材料属性可以确保仿真结果的准确性和可靠性。本节将详细介绍如何在FDTD Solutions中定义和应用不同的材料属性,包括介质材料、金属材料、色散材料等,并提供具体的代码示例和数据样例。介质材料是光学仿真中最常见的材料类型之一。在FDTD Solutions中,可以通过多种方式定义介质材料,包括使用预定义的材料库、自定义材料参数或导入材料数据文件。FDTD Solutions内置了一个丰富的材料库,包含了许多常用材料的光学性质。

kkchenjj的博客 1401

sizeof的一些知识 (以及与strlen()的对比)

- 一,sizeof() 的一些常见使用 char* s1="0123456789"; char s2[]="0123456789"; char s3[100]="0123456789"; int s4[100]; char q1[]="abc"; char q2[]="a\n"; char* q3="a\...

weixin_43853589的博客 307

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

《strlen()和sizeof()全网干货最细》

本文章可谓是全文最细的strlen和sizeof干货,希望大家不要放过

Shine0115的博客 1299

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

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

简述sizeof()与strlen()的区别

简述sizeof()与strlen()的区别 先贴代码 : 固定内存空间, 实际的占用内存空间, 一个汉字占两个字节 ,

Aseed40424991的博客 504

sizeof()和strlen()

strlen()相较于sizeof()并未把空字符"\0"计入“str1”的长度中。sizeof运算符给出的数更大,因为它把字符串末尾不可见的空字符也计算在内。上面我们创建了名为“ch”的字符串类型的变量,并把值“A”赋予“ch”。左边是内存名称实际并不占内存,右边是存储在这里的值。sizeof运算符是以字节为单位给出对象的大小。strlen()给出字符串中字符的长度。#CPrimer#随记。先看看字符是如何存储的。

Youngtsi的博客 321

sizeof()与strlen()的区别

sizeof()函数以字节为单位给出数据的大小,strlen()函数以字符为单位给出字符串 的长度。而一个字符只占用一个字节,那是不是这两个函数应用到同一个字符串时可以得到 相同的结果呢?事实并非如此。      例如,对于一个数组长度为40的char型数组,假设其中实际保存的字符个数为6,则用 sizeof读取出的长度为40,而用strlen()函数读出的长度为6(数组的第7个单元放置空

兰亭风雨的专栏 3028

C语言sizeof()和strlen()函数的区别

首先看一个程序#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, char const *argv[]) { char* p=NULL; char array[10]="abcdefgfde"; printf("%d\n",sizeof(array)); printf("

clise_girl的博客 1043

strlen()和sizeof()的区别

关于strlen()和sizeof()的区别 strlen()函数是针对字符数组元素个数,在string类型中不存在该函数; sizeof()函数是针对内存空间的函数,计算的是对象所占内存空间的大小。 举例说明区别: #include<iostream> #include<cstring> using namespace std; int main(void) { char s[20] = "sidh foge "; int len = strlen(s); cout &

qq_42679337的博客 235

C中sizeof()和strlen()的区别

C中sizeof()和strlen()的区别 在学Linux服务器端编程的时候,总是被sizeof(buf)、sizeof(buf)-1、strlen(buf)、strlen(buf)+1搞晕,在这里总结一下。 因为strlen()是一个函数,参数只能是char*类型,而sizeof()是一个单目运算符,它的参数可以是数组、指针、类型、对象、函数等等,所以这里分两种情况分别说:第一种是字符串情况下,strlen()和sizeof()都可以用;第二种情况是其他类型下,只能用sizeof()。 1 字符串情况下

童年的纸飞机的博客 1735

sizeof()与strlen()

sizeof()可以计算所有类型,strlen()仅计算字符串。 sizeof计算对象所占内存字节数,strlen()计算字符个数,遇到'\0'截止。 char *a; char b[5]; sizeof(a) = 8 ; // 64位系统,8代表的是指针的大小,指针占8字节 sizeof(b) = 5 ; // 计算字符串数组的结果是真实的字符数组大小 //strlen(a) strlen(b) // 无固定值,因为strlen判断的唯一标准是'\0', //它会根据a...

LSY_HYH的博客 245

C++求字符串长度————sizeof()、size()、strlen()以及length()详解

sizeof()、size()、strlen()以及length()函数

Terminal_ve的博客 6万+

c语言中sizeof()和strlen()的区别

sizeof()是运算符,它以字节为单位给出指定类型的大小。一个字节通常是8位。strlen()是一个函数,它给出指定字符串中的字符长度。

apple_51255671的博客 1710

C语言中关于sizeof()和strlen()的面试/笔试题【干货满满】

------------------------------------------------------- 头脑风暴----------------------------------------------------------sizeof与strlen的区别,前者是计算内存空间长度的(占多少个字节),后者只能计算字符串的长度【strlen()传进去的是数组首元素的地址,函数从首地址开始统计个数,遇到'\0'截止】

小比特大梦想 525

strlen、sizeof与size()求字符串长度的区别

strlen、sizeof与size()求字符串长度的区别 cout&lt;&lt;strlen("123")&lt;&lt;endl; //返回 3 cout&lt;&lt;sizeof("123")&lt;&lt;endl; //返回 4 string s = "123"; cout&lt;&lt;s.size()&lt;&lt;endl

yanxu_165319的博客 2万+

sizeof(),strlen(),length(),size()区别

C语言学习之sizeof与strlen【C语言进阶】sizeof、strlen详解数组的定义,初始化和使用,C语言数组详解字符数组(用sizeof和strlen计算长度的说明)C语言转义字符C语言——转义字符。

Chiang11的博客 557
上一篇: hybrid-sleep和sleep以及hibernate的区别
下一篇: c打印乘法口诀和三角
listenerri
博客等级 码龄12年 39粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值