sizeof和strlen的对比及练习题(超详细)

34 篇文章 0 订阅
订阅专栏


创造不易,可以点点赞吗~

如有错误,欢迎指出~



sizeof和strlen的对比

sizeof举例说明

sizeof计算int类型数据

(有关于数组)sizeof计算

strlen举例说明

strlen是C语言库函数,求字符串长度

函数原型: size_t  strlen(const  char*str);

strlen和sizeof功能上的鲜明对比

做点小改动:将arr大小变为20

但strlen函数可能会存在越界行为

如图arr数组中没有放置\0,内存中abc后面存放的是随机字符,strlen统计直到遇到\0才会停止,所有这时统计的值是随机的。

sizeof和strlen相关练习题

一维数组

int a[] = {1,2,3,4};
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(a+0));
printf("%d\n",sizeof(*a));
printf("%d\n",sizeof(a+1));
printf("%d\n",sizeof(a[1]));
printf("%d\n",sizeof(&a));
1https://www.bitejiuyeke.comprintf("%d\n",sizeof(*&a));
printf("%d\n",sizeof(&a+1));
printf("%d\n",sizeof(&a[0]));
printf("%d\n",sizeof(&a[0]+1));

解析

字符数组

代码1


char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr+0));
printf("%d\n", sizeof(*arr));
printf("%d\n", sizeof(arr[1]));
printf("%d\n", sizeof(&arr));
printf("%d\n", sizeof(&arr+1));
printf("%d\n", sizeof(&arr[0]+1));

解析

代码2


char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", strlen(arr));
printf("%d\n", strlen(arr+0));
printf("%d\n", strlen(*arr));
printf("%d\n", strlen(arr[1]));
printf("%d\n", strlen(&arr));
printf("%d\n", strlen(&arr+1));
printf("%d\n", strlen(&arr[0]+1));

解析

代码3

char arr[] = "abcdef";
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr+0));
printf("%d\n", sizeof(*arr));
printf("%d\n", sizeof(arr[1]));
printf("%d\n", sizeof(&arr));
printf("%d\n", sizeof(&arr+1));
printf("%d\n", sizeof(&arr[0]+1));

解析

代码4

char arr[] = "abcdef";
printf("%d\n", strlen(arr));
printf("%d\n", strlen(arr+0));
printf("%d\n", strlen(*arr));
printf("%d\n", strlen(arr[1]));
printf("%d\n", strlen(&arr));
printf("%d\n", strlen(&arr+1));
printf("%d\n", strlen(&arr[0]+1));

解析

代码5

char *p = "abcdef";
printf("%d\n", sizeof(p));
printf("%d\n", sizeof(p+1));
printf("%d\n", sizeof(*p));
printf("%d\n", sizeof(p[0]));
printf("%d\n", sizeof(&p));
printf("%d\n", sizeof(&p+1));
printf("%d\n", sizeof(&p[0]+1));

解析

代码6

char *p = "abcdef";
printf("%d\n", strlen(p));
printf("%d\n", strlen(p+1));
printf("%d\n", strlen(*p));
printf("%d\n", strlen(p[0]));
printf("%d\n", strlen(&p));
printf("%d\n", strlen(&p+1));
printf("%d\n", strlen(&p[0]+1));

解析

二维数组

int a[3][4] = {0};
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(a[0][0]));
printf("%d\n",sizeof(a[0]));
printf("%d\n",sizeof(a[0]+1));
printf("%d\n",sizeof(*(a[0]+1)));
printf("%d\n",sizeof(a+1));
printf("%d\n",sizeof(*(a+1)));
printf("%d\n",sizeof(&a[0]+1));
printf("%d\n",sizeof(*(&a[0]+1)));
printf("%d\n",sizeof(*a));
printf("%d\n",sizeof(a[3]));

解析

其中我们要理清

数组名的意义:

  • 1. sizeof(数组名),这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩。
  • 2. &数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址。
  • 3. 除此之外所有的数组名都表⽰⾸元素的地址。
sizeofstrlen练习题
weixin_45258996的博客
03-16 123
#include <stdio.h> #include <string.h> int main() { ///////////////////////////////////////// // 第一组 ///////////////////////////////////////// // char[6] // char arr[] = { 'a', 'b', 'c', '...
计算数值有几位,非sizeofstrlen算法.cpp
07-21
主要是下载分不够了,希望上传代码赚几分回来。 小白yige,这些代码是学习C的时候习题代码,没有什么实用价值,高手就别来笑话我了,特别是那些和我一样还在自学的朋友相互之间交流一下。
sizeofstrlen区别及举例
qq_44759710的博客
02-18 530
sizeofstrlen区别 1)sizeof 操作符的结果类型是 size_t,它在头文件中 typedef 为 unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2)sizeof 是个操作符,strlen 是库函数。 3)sizeof 的参数可以是数据的类型,也可以是变量,而 strlen 只能是以结尾为 ’\0’ 的字符串作参数。 4)编译器在编译时就...
经典C语言面试题8:sizeofstrlen区别
M_joy666的博客
05-27 9320
一、基本定义1、sizeof是C/C++中的一个运算符,其作用是返回一个对象或者类型在内存中所占用的字节数。    注意:sizeof后面如果是类型则必须加括号,如 sizeof(char);而如果是变量名则可以不加括号,如 sizeof a; 但是建议使用时  均加上括号。sizeof不能返回动态地被分配的数组的大小。2、strlen是C语言中的库函数,所在头文件为#include &lt;st...
sizeofstrlen
weixin_30437337的博客
03-03 96
char str[20]="0123456789";int a=strlen(str); /*a=10;strlen 计算字符串的长度,以\0'为字符串结束标记。int b=sizeof(str); /*b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响========================================...
简单例子来讲讲 strlensizeof区别
puzexiong的博客
07-09 266
首先, strlen 是 函数, sizeof 是 一个运算符 然后, strlen 是对 字符串 求长度 遇到 空字符返回 sizeof 可以作用于数组、指针、类型、对象、函数等 最后再引用某大佬的一句话:对 sizeof 而言,因为缓冲区已经用已知字符串进行了初始化,其长度是固定的,所以 sizeof 在编译时计算缓冲区的长度。也正是由于在编译时计算,因此 sizeof 不能用来返回动态分配的内存空间的大小. 经验: 通过 strlen调用 返回的值做加减时, 要写成 st...
SizeofStrlen区别与联系
weixin_34010566的博客
12-23 303
一、sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值...
《C语言程序设计》练习题及答案.doc
02-17
以下是《C语言程序设计》练习题及答案的详细解释: 1. 指针与数组 在C语言中,指针是指向内存中某个位置的变量的地址。题目1考查的是指针的基本概念,考生需要了解指针的定义、声明和使用。正确答案是D,*p=5;是将...
c语言基础练习题及答案.pdf
最新发布
11-13
"C语言基础练习题及答案" 本资源是一份C语言基础练习题集,包含20道选择题,涵盖了C语言的基本概念、变量、数据类型、运算符、控制结构、函数、数组、指针等方面的知识点。 1. C语言源程序文件经过C编译程序编译...
《C语言基础》习题及答案.pdf
09-30
《C语言基础》习题及答案涵盖了C语言的基础知识点,包括数据类型、运算符的优先级、流程控制、数组、指针以及函数的使用。以下是这些习题中涉及的C语言核心概念: 1. 运算符:题目中提到了模运算符`%`、自增`++`、...
面试题(2)|C/C++基础(2):sizeofstrlen区别
haimianjie2012的专栏
03-22 1137
1.功能不同 sizeof是操作符,参数为任意类型,主要计算类型占用内存大小。 strlen()是函数,其函数原型为: extern unsigned int strlen(char *s); 其参数为char*,strlen只能计算以"\0"结尾字符串的长度,计算结果不包括"\0"。 char* ss="0123456789"; //s1=4,ss为字符指针在内存中占用4个字节
strlen()和 sizeof ()的区别
lee514的博客
10-04 9304
C语言中有两个函数会经常用到,尤其是在对字符串处理的时候。 C语言中没有字符串类型,字符串在内存中是用字符数组表示的。 strlen( ) strlen( )求得的是字符串的长度 例如字符串  str[20]= {“abcd”}; strlen(str),结果为4 sizeof( ) sizeof( )计算字符串占的总内存空间 例如字符串  str[20]= “abcd” siz...
C语言中关于 strlensizeof 的用法及区别(含例题及解析)
ty6693的博客
01-31 4845
一、前言 首先我们需要知道的是,sizeof既是一个单目操作符,也是一个关键字,其作用是求操作数的类型长度(以字节为单位)。 而strlen是一个字符串操作函数,是一个参数为指针类型返回值为size_t(unsigned int)的函数,求的是字符串的长度。 所以现在我们知道sizeof是一个求操作数类型长度的操作符(关键字),而strlen是一个求字符串长度的字符串操作函...
strlensizeof对比
假正经Leo先生
12-15 334
sizeof( )是运算符 功能:获得类型或表达式的最大对象的字节大小。 sizeof()可以计算数组、指针、类型、对象、函数 数组——编译时分配的数组空间大小; 指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,32位操作系统应该为4); 类型——该类型所占的空间大小; 对象——对象的实际占用空间大小; 函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。...
sizeof()和strlen区别
热门推荐
Victor的BLOG
03-18 1万+
首先得区别清楚: sizeof()是运算符,在头文件的类型为unsigned int,其运算值在编译时就计算好了,参数可以是指针、数组、类型、对象和函数等; strlen()是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化为指针了。该函数完成的功能是从代表该字符串的第一个地址开始遍历的,直到遇到结束符NULL。返回的长度大小不包括NULL。 ...
C语言sizeofstrlen详解(附大量笔试题题解过程)
chuxinchangcun的博客
09-10 8256
一.sizeof()详解 二.strlen()详解 strlen()的模拟实现: 法1:计数器 法2:指针-指针 法3:递归 三.strlensizeof区别 四.笔试题 1.整形数组int a[] = {1,2,3,4} strlen()相关题目 sizeof()相关题目 2.字符数组-char arr[] = {'a','b','c','d','e','f'} strlen()相关题目 sizeof...
面试题3——sizeofstrlen区别
一步两步先生的博客
12-06 1655
sizeofstrlen有如下区别: (1)sizeof是一个操作符,strlen是库函数; (2)sizeof的参数可以是数据的类型,也可以是变量,而strlen只能以结尾为’\0’的字符串做参数; (3)编译器在编译时就计算出了sizeof的结果。而strlen函数必须在运行时才能计算出来。并且sizeof计算的是数据类型占内存的大小,而strlen计算的是字符串实际的长度; (4)数组做s...
C语言中sizeof()和strlen()的区别
追梦的小蚂蚁
12-31 1万+
sizeof》 (一)、sizeof的基本概念 sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号 内的类型名。操作数的存储大小由操作数的类型决定。 (二)使用方法 1、用于数据类型 sizeof使用形式:sizeof(type) ,如sizeof(int) 2、用于变量 sizeof使用形式:sizeof(var_name)或si...
[面试题]sizeofstrlen区别
SmartSi
09-07 243
例题: constchar *p = "Hello World"; char p[] = "Hello World";分别求长度和所占用空间大小,有啥区别? 答:求长度都可以用strlen(p),求占内存空间大小第一个不能用sizeof,第二个可以用sizeof 另外:第二个:strlen(p) = 11, sizeof(p) = 12 举一反三: l sizeof sizeof(...
50道必知C/C++面试题:涵盖声明、数据类型比较、sizeofstrlen及static差异
本文提供了4个典型的面试题目,涵盖了变量声明与定义、基本数据类型的比较、sizeofstrlen区别以及C与C++中关键字`static`的不同含义。 首先,理解变量声明与定义的概念至关重要。声明(declaration)是指在程序...
写文章

热门文章

  • 【JavaSE】数据类型和运算符 4682
  • 拿捏c语言指针(上) 3980
  • 【JavaSE】接口 详解(上) 3909
  • 【数据结构】顺序表详解 2842
  • 【JavaSE】解密 继承和多态(下) 2738

分类专栏

  • 数据结构 7篇
  • JavaSE 14篇
  • c语言基础知识 34篇

最新评论

  • 【JavaEE初阶】文件IO(上)

    新绿MEHO: 文件操作

  • 【JavaEE初阶】多线程7(面试要点)

    24k纯甄: 【JavaEE初阶】多线程7(面试要点)

  • 【JavaEE初阶】多线程7(面试要点)

    Trouvaille ~: 博主的技术博客在内容上十分丰富,涵盖了该技术领域多个层面的要点,从基础概念到高级应用均有涉及,具备很强的知识综合性。

  • 【JavaEE初阶】多线程7(面试要点)

    ✿༺小陈在拼命༻✿: 博主的博文写得真是太精彩了!每一篇都充满了独特的思考和深邃的见解,仿佛引领我们进入了一个全新的领域。博主的笔触细腻且富有感染力,让人在阅读的过程中不断被吸引,仿佛与博主一同经历了一场思想的盛宴。博主的博文不仅内容丰富,而且结构清晰,逻辑严密,读起来令人陶醉。博主真的是一个才华横溢的创作者,期待您未来更多精彩的作品!

  • 【JavaEE初阶】多线程7(面试要点)

    小ᶻZ࿆: 这篇文章实在是太棒了!内容丰富,论述清晰,代码实例更是琳琅满目,让人阅读起来津津有味。博主的专业素养和用心程度从中可见一斑,无疑为读者提供了一笔宝贵的知识财富。 文章从基础概念出发,由浅入深地阐述了编程的核心思想。在阅读过程中,我感受到了博主对编程的热爱和敬业精神,他/她用通俗易懂的语言,将复杂的编程知识讲解得淋漓尽致。这使得读者在阅读过程中既能够掌握知识,又能够保持兴趣。

大家在看

  • LabVIEW软件出现Bug如何解决
  • SSM框架VUE电影售票管理系统开发mysql数据库redis设计java编程计算机网页源码maven项目
  • AI学习指南深度学习篇-Adadelta算法流程
  • uniapp精仿支付宝UI界面,首页/理财/消息/生活/口碑/我的,还有模拟支付宝扫码支付/收付款等功能,界面漂亮颜值高,视频商城小工具等,蚂蚁森林种树养鸡农场偷菜样样齐 用于视频,商城,直播,聊天等
  • 如何使用淘宝API获取买家秀数据?一份详细指南 875

最新文章

  • 【JavaEE初阶】文件IO(上)
  • 【JavaEE初阶】多线程7(面试要点)
  • 【JavaEE初阶】多线程6(线程池\定时器)
2024
09月 11篇
08月 5篇
07月 8篇
04月 17篇
03月 14篇
02月 22篇
01月 1篇
2023年3篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

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

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