C语言--字符串--sizeof与strlen的区别

118 篇文章 12 订阅
订阅专栏


目录

一.前言

二.sizeof的用法

三.strlen的用法 

四.sizeof与strlen的区别

五.总结

六.小试牛刀 


一.前言

sizeof()是操作符,strlen()是函数,这俩本来没有关系,但用着用着就会混淆。


二.sizeof的用法

sizeof()是一种操作符,用来求取“变量”or“类型”所占空间的大小(单位:字节)。值得注意的是sizeof不是函数,函数的后面是必须要加()的,而sizeof后面对变量所占内存空间计算时可以省略,由此看出,sizeof不是函数。补充一点:sizeof对类型进行计算时则不可省略。

sizeof可以用于以下情况:

1. 用于获取基本数据类型的大小:可以使用sizeof来获取基本数据类型(如int、char、float等)在当前平台上的字节大小。例如,sizeof(int)将返回int类型在当前平台上的字节大小。
  
2. 用于获取数组的大小:可以使用sizeof来获取整个数组的大小。例如,int arr[10];,那么sizeof(arr)将返回整个数组占用的字节大小。

3. 用于获取指针类型的大小:sizeof可以用于获取指针类型(如int*、char*等)在当前平台上的字节大小。例如,sizeof(int*)将返回一个指针类型的字节大小。

4. 用于动态分配内存时获取内存块的大小:在使用动态内存分配函数(如malloc、calloc等)分配内存时,可以使用sizeof来获取需要分配的内存块的大小。例如,malloc(sizeof(int) * 10)将分配一个具有10个int类型元素的内存块。

5.在计算数组中元素的个数时也非常有用,len=sizeof(arr)/sizeof(arr[0]);len 就是数组的长度

需要注意的是,sizeof是一个编译器运算符,它在编译时计算并返回结果。它不会对操作数进行实际的计算或者运行时的访问。

总结:sizeof运算符可以帮助我们在编写C程序时,获取各种数据类型的大小,在进行内存分配、数组处理等操作时非常有用。


三.strlen的用法 

strlen是一个C语言的字符串处理函数,用于计算字符串的长度(不包括字符串结尾的空字符'\0')。需要应用头文件<string.h>。

注意:虽然字符串的末尾默认有一个'\0'字符,但是strlen在计算时是不包括'\0'的,即 所见即所得

比如: 下面的str的长度为11,不包括'\0'哦!

char str[20]="hello world"; 


 


四.sizeof与strlen的区别

sizeof是一个运算符,用于获取数据类型或变量所占用的内存字节数。常用于动态分配内存、计算数组元素个数等场景。例如,sizeof(int)返回4,sizeof(char[20]返回20。

strlen是一个函数,用于计算以指定字符为结尾的字符串的长度。在运行时遍历字符串数组,直到找到结束符'\0'为止。常用于字符串操作和处理。例如,strlen("hello")返回5。

注意;sizeof可以用于计算任何数据类型的大小,包括基本类型、数组、结构体、指针等。而strlen只能用于以'\0'结尾的字符串。

综上,sizeof和strlen虽然都用于获取数据大小,但是具体用法和计算方式是不同的。使用时需要根据具体的需求选择合适的函数或操作符。

五.总结

 sizeof()是操作符,strlen()是函数,sizeof用于计算后面内容所占空间的大小,单位是字节。要包括字符'\0',strlen用于计算字符串的长度,不要包括'\0'。


六.小试牛刀 

分别计算:str1,str2,str3,str4,str5,str6,str7的sizeof与strlen的计算结果,并打印。

int main()
{
    char str1[100] = "abcde";
    char str2[] = "abcde";
    char str3[100] = "abcde\nxy\0z";
    char str4[] = "abcde\nxy\0z";
    const char *str5 = "abcde\nxy\0z";//指针,x86为4字节,x64为8字节
    char str6[] = {0,0,0,0,0,0};
    char str7[] = {'\0','\0','\0' ,'\0' ,'\0' };
    printf("%d,%d\n", sizeof(str1), strlen(str1));//100,5
    printf("%d,%d\n", sizeof(str2), strlen(str2));//6,5
    printf("%d,%d\n", sizeof(str3), strlen(str3));//100,8
    printf("%d,%d\n", sizeof(str4), strlen(str4));//11,8
    printf("%d,%d\n", sizeof(str5), strlen(str5));//4,8
    //printf("%s\n",str3);
    return 0;
}


 创作不易, 如果这份博客👍对你有帮助,可以给博主一个免费的点赞以示鼓励。
欢迎各位帅哥美女点赞👍评论⭐收藏⭐,谢谢!!!
如果有什么疑问或不同的见解,欢迎在评论区留言哦👀。
祝各位生活愉快⭐

c语言和c++字符串的不同,sizeofstrlen区别计算长度
weixin_43719854的博客
05-26 710
首先strlen是一个函数,并且所传入的参数必须是char*,发生在运行时刻。用来计算字符串的长度,遇到第一个NULL(‘\0’)为止,不包括‘\0’. 而sizeof是一个关键字,发生在编译时刻,可用作常量表达式。是用来计算变量或者对象、类型所占字节的多少。包含‘\0’。 总结如下,当参数分别如下时,sizeof返回的值表示的含义如下: 数组——编译时分配的数组空间大小; 指针——存储该指针所用的空间大小(在32位系统是4,在64系统是8); 类型——该类型所占的空间大...
C语言--计算字符串长度--字符串复制--查找字符在字符串中出现的次数
Yang_Xiaweiyang的博客
08-09 379
C语言--计算字符串长度--字符串复制--查找字符在字符串中出现的次数
【C】用 sizeofstrlen() 函数计算字符串长度的重要区别
Kp_2000的博客
05-05 775
先看例子: #include<stdio.h> #define GET_LEN(array, len) len = sizeof(array) / sizeof(array[0]) #include<string.h> int main(){ char str[] = "abc"; char sonStr[] = "abc"; int lengt...
strlensizeof 计算字符串长度的区别
nandycooh
10-18 7809
两者区别 sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小sizeof是运算符(C++ 关键字),strlen是函数。 sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以”\0”结尾的。sizeof还可以用函数做参数 sizeof计算的是变量的大小,而strlen计算的是字符串的长度,前者不受字符’\0’影响,后者以’\0’作为长度判定依据 测试代码 int main() {
计算字符串的长度:strlensizeof的不同
cherry_711的博客
10-23 763
计算字符串的长度,所用strlensizeof计算区别
sizeofstrlen字符串计算中的区别
weixin_50212958的博客
10-26 187
sizeofstrlen字符串计算中的区别 int main() { int a[] = {1,2,3}; printf("数组a的元素个数;%d\n",sizeof(a)/sizeof(a[0])); char a2[] = "hello"; printf("数组a的元素个数;%d\n",sizeof(a2)/sizeof(a2[0])); printf("我们希望得到hello的真实字符个数,用strlen,%d\n",strlen(a2));
字符串 - C语言 - 连接两个字符串
最新发布
06-16
### 字符串 - C语言 - 连接两个字符串 #### 一、字符串基础 ##### 字符串的定义和表示 在C语言中,字符串本质上是一个字符数组,它以`\0`(空字符)作为结束标志。例如: ```c char str1[] = "Hello, "; char *...
c语言基础-c语言编程基础之字符串操作示例-数字转换成十六进制数.zip
03-17
4. **字符串长度**:`strlen()` 函数可以获取字符串的长度(不包括结束的空字符),例如 `strlen(str)` 返回 `str` 的长度。 5. **格式化输出**:`printf()` 函数允许我们按照特定格式输出数据,如 `%s` 表示字符串...
数据结构-c语言-带main函数-串1-串的长度-标准库函数strlen()和sizeof()的两种方法。
06-24
综上所述,`strlen()`和`sizeof()`都是在C语言中获取字符串长度的手段,但它们有明显的区别。`strlen()`专注于计算字符串的字符数,直到遇到'\0'为止,而`sizeof()`则返回整个数组的大小,包括未使用的部分。在实际...
IOS开发之路--C语言数组和字符串
09-04
10. **字符串处理函数**:C语言标准库提供了一些处理字符串的函数,如`strlen`计算字符串长度,`strcpy`复制字符串,`strcat`连接字符串,`strcmp`比较字符串等。这些函数在头文件中定义。 11. **在iOS开发中的应用...
strlensizeof区别
公子聪的博客
01-20 7816
strlensizeof区别
字符串大小总结sizeofstrlen
〓☆〓 清风徐来918 (QQ:89617663)
11-18 343
char str[] = "313233414243";    //系统会在str后面加一个字符串结束符 ‘\0’ std::cout使用strlen计算字符串结束符 ‘\0’ std::cout使用sizeof计算字符串结束符  ‘\0’ =================================== int main(int argc, char *
sizeof运算符和strlen函数的区别
勇敢无畏的活着
04-06 689
1、sizeof是运算符,而strlen是函数。 2、sizeof操作符的运算结果为size_t,他在头文件中的typedef为unsigned int。该类型保证能容纳所操作对象的最大字节大小。 3、sizeof可以用类型做参数,而strlen只能用char*做参数,且必须是以‘\0’结尾。 4、数组做sizeof参数不退化,而做strlen就退化成指针。 5、大部分编译
sizeofstrlen区别
f__yuan的博客
09-06 190
在日常编程中,sizeofstrlen以高频率出现在许多位置,尤其是在对字符串大小进行计算时,今天我们来系统的了解一下他们。 首先是区别sizeof是运算符,strlen是函数 sizeof可以用类型或者函数做参数,strlen只能用char*做参数,且必须是以‘\0’结尾 对数组进行处理时,sizeof以数组为参数不会退化,而传递给strlen会退化为指针 大部分sizeof在...
【008 关键字】sizeofstrlen的用法区别
kashine的博客
03-08 745
1、sizeof既是关键字,也是运算符,但不是函数(sizeof返回一个对象或者类型所占的内存字节数)。strlen是函数(得到字符串的实际长度,size_t strlen (const char *__s),size_t是unsigned int类型)。 2、sizeof后如果是类型,则必须加括弧,如果是变量名,则可以不加括弧。 3、 4、sizeof可以是数组、指针、类型、对象(类型的实例化)、函数等,但strlen只能用char*作为参数,而且必须要是'\0'作为结尾。 .
简述sizeofstrlen区别
qq_42681578的博客
09-25 346
sizeofstrlen区别 属性不同: sizeof是运算符(关键字),strlen是函数 用法不同: sizeof可以使用类、结构体、共用体以及其他用户自定义的数据类型作为参数,然后计算相应的大小;而strlen只能使用字符指针作为参数,计算字符串大小。所以sizeof 计算的是变量的大小,而 strlen 计算的是字符串的长度。 运行过程不同: 在大部分编译程序中,sizeof的结果在编译的时候就计算出来了,而 strlen 的结果要在运行的时候才能计算出来
sizeofstrlen,len的区别
09-02
sizeof是一个运算符,用于获取变量或数据类型的字节大小。它返回的是数据在内存中所占的字节数。而strlen是一个函数,用于计算字符串的长度,即字符串中字符的个数,它返回的是字符的个数。 举例来说,如果有一个字符数组arr,其中存有字符串"Hello",那么sizeof(arr)返回的是该字符数组所占的字节数,而strlen(arr)返回的是字符串中字符的个数,即5。 另外,需要注意的是,当使用sizeof运算符来计算指针时,它返回的是指针变量本身的字节大小,而不是指针指向的数据所占的大小。例如,对于一个指向字符串常量的字符指针ss,sizeof(ss)返回的是指针变量ss本身的字节大小,通常是4字节,而不是字符串的长度。 所以,sizeofstrlen区别在于,sizeof返回的是数据类型或变量所占的字节数,而strlen返回的是字符串中字符的个数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [sizeofstrlen区别](https://blog.csdn.net/u010388659/article/details/104994738)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
写文章

热门文章

  • C语言--求数组的最大值和最小值【两种方法】 9955
  • C语言--输入一个数字判断是否是素数(详细解答+代码优化) 7578
  • C语言--一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第10次落地时共经过多少米,第10次反弹多高 7099
  • C语言--将一个数组中的值按逆序重新存放。 6388
  • Windows系统下更新后自带的画图软件出现马赛克bug 5319

分类专栏

  • 力扣刷题 143篇
  • Python 4篇
  • C++学习 73篇
  • 数据结构 14篇
  • C语言学习 118篇
  • C++STL标准库 27篇
  • 前端学习 1篇
  • Linux 11篇
  • 软件安装 8篇
  • Java 1篇
  • 算法分析
  • MySQL数据库
  • 操作系统
  • 计算机组成原理
  • 计算机网络
  • 菜鸟的逆袭 1篇

最新评论

  • C语言--五子棋项目【图文详解 经典】

    码农小小苏: 感谢支持表情包

  • Python--列表简介

    码农小小苏: 不客气啦,感谢支持

  • Python--列表简介

    艾普里莫: 关于列表的介绍,特别详细,看完以后受益非浅,必须收藏起来,以后用的时候拿出来看,谢谢博主分享

  • 力扣刷题--674. 最长连续递增序列【简单】

    小王毕业啦: 这篇关于力扣刷题-674. 最长连续递增序列的文章写得非常棒!博主的独特见解和详细解释让我对这道题有了全新的理解,让我受益匪浅。文章内容简洁明了,逻辑清晰,让人一目了然。感谢博主的用心分享和辛苦付出!期待未来能看到更多博主的优质文章,也希望可以继续得到博主的指导,共同进步。再次感谢博主的付出和支持!

  • C语言--一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第10次落地时共经过多少米,第10次反弹多高

    试看我良知: 很细致,很好,非常感谢

最新文章

  • 力扣刷题--3033. 修改矩阵【简单】
  • 力扣刷题--73. 矩阵置零【中等】
  • Python--列表简介
2024
09月 30篇
08月 26篇
07月 26篇
06月 18篇
05月 74篇
04月 47篇
03月 25篇
02月 3篇
01月 8篇
2023年111篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小小苏

感谢大佬支持!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

天下网标王上海正规百度seo网站优化罗湖分类网站优化方式有哪些温州网站优化公司无锡网站优化平台青岛集团网站优化公司许昌正规网站优化排名牟平seo网站优化哪家好企业免费网站优化公司有哪些双峰网站优化公司平顶山专业网站优化地址保定seo网站优化推广报价怎么优化网站并发访问内链如何优化企业的网站可以优化的免费网站昆明哪有网站优化公司河南优惠网站优化公司价格福州低价机械行业网站优化网站怎么优化排名靠前西安网站优化哪家强铜川网站的优化新乡网站排名优化费用网站如何进行网址优化网站优化报告范文河源信誉好的免费网站优化靖安县网站seo优化排名常宁网站怎么优化网站搜索引擎优化分析重庆好的珠宝行业网站优化高新网站优化联系方式上城区网站优化推广平台香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化