【C语言】sizeof和strlen的区别【详解】

这篇具有很好参考价值的文章主要介绍了【C语言】sizeof和strlen的区别【详解】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.sizeof和strlen的主要区别

二.sizeof和strlen分别讲解(含例题和详解)

1.sizeof

在计算字符型数组时(例题+讲解)

计算整型数组(例题+讲解)

2.strlen

例子一(讲解):

例子二(讲解)

三.典型例题

例1

答案解析:

例2

答案解析:


一.sizeof和strlen的主要区别

1.sizeof运算符,而strlen 是C语言库函数中的一个函数(使用时包含头文件(string.h))

对于sizeof来说,使用时不加()也是正确的,这样也可以说明sizeof不是函数

2.sizeof 操作符用于计算变量或类型的大小,一般单位为字节,通常用于计算内存大小。

3.strlen是计算字符串长度的,遇到\0结束,返回不包括\0,即如果没有\0则会计算出随机值;


二.sizeof和strlen分别讲解(含例题和详解)

1.sizeof

在计算字符型数组时(例题+讲解)

如代码:char  arr1 []="hello bite!"  因为字符串末尾会自动添加\0作为结束标志 所以这个字符串实际是 “hello  bite!\0” 其中一个字符占一个字节,空格和\0也各占一个字节 一共就是12个字节;

代码:

int main()
{
	char arr[] = "hello bite!";
	int ret = sizeof(arr);

	printf("%d\n",ret);
	return 0;
}

运行结果是:

 【C语言】sizeof和strlen的区别【详解】

 


计算整型数组(例题+讲解)

如代码:int arr2 [5]={0};因为是整型,所以一个元素占4个字节(一个整型所占大小);数组大小就是   元素个数×4   即arr2所占大小是5×4=20个字节

代码:


int main()
{
	int arr[5] = { 0 };
	int ret=sizeof(arr);

	printf("arr所占内存大小为:%d字节\n",ret);

	return 0;
}

运行结果:

【C语言】sizeof和strlen的区别【详解】

 

2.strlen

3.strlen是计算字符串长度的,遇到\0结束,返回不包括\0,即如果没有\0则会计算出随机值;

例子一(讲解)

char arr[]="abcdefg";   实际字符串内容为 "abcdefg\0" 即strlen所计算的是\0之前的"abcdefg",即算出字符串长度为7个字符;

#include <string.h>

int main()
{
	char arr[] = "abcdefg";
	int len = strlen(arr);
	printf("字符串长度为:%d个字符\n",len);

	return 0;
}

运行结果:

【C语言】sizeof和strlen的区别【详解】

 



例子二(讲解)

char arr[]={ 'a' , 'b' , 'c', 'd' , 'e' , 'f' , 'g' };  该字符数组中放入的是 a b c d e f g 这7个字符;因为不是字符串,所以末尾没有\0;没有\0,当使用strlen函数进行计算是就不知道在哪里结束;计算结果就是我们想不到的随机值(如下面的运行结果14028835)意思是当使用strlen函数进行计算时,当计算完arr数组时,因为没遇到\0,所以还要继续往后计算,(这里直到计算了14028835个字符后)才遇到\0结束;

代码:

#include <string.h>

int main()
{
	char arr[] = { 'a','b','c','d','e','f','g' };
	int len = strlen(arr);
	printf("arr的长度为:%d字符\n");


	return 0;
}

运行结果:

【C语言】sizeof和strlen的区别【详解】

 


三.典型例题

例1

【C语言】sizeof和strlen的区别【详解】

答案解析:

str字符数组使用"hello bit"初始化,最终也会将'\0'放置到数组中,因此数组中总共有10个元素

sizeof(str):获取数组的总大小,10个元素,每个元素占1个字节,因此总共是10个字节

strlen(str): 获取字符串中有效字符的个数,不算'\0',因此总共9个有效字符

故上述printf会分别打印:10  9

因此,选择A

例2

【C语言】sizeof和strlen的区别【详解】

答案解析:

对于int arr[] = {1,2,(3,4),5}数组,里面总共有4个元素,(3,4)为逗号表达式,取后者,因此数组中元素分别为:1,2,4,5

而sizeof(arr)求的是整个数组所占空间的大小,即:4*sizeof(int)=4*4=16

因此,选择B文章来源地址https://www.toymoban.com/news/detail-488144.html

到了这里,关于【C语言】sizeof和strlen的区别【详解】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言之区分sizeof 和 strlen】

    前言: 首先,我们需要明白它们的 根本区别,sizeof属于也属于单目操作符,而strlen属于库函数 / 知识点回顾 / 单目操作符:单目运算符对应只有一个操作数 常见的单目操作符: 常见的单目操作符 描述 ! 逻辑非 ’ - ‘ 负 ’ + ‘ 正 取地址 sizeof 计算一个数据类型的

    2024年02月11日
    浏览(47)
  • 深入解析C++中sizeof和strlen的奥秘:区别、应用与技巧全揭秘!

      sizeof  和  strlen  是 C++ 中用于处理字符串的两个不同的操作符,它们的作用和使用场景有很大的区别。 sizeof  是一个运算符,不是一个函数,用于获取一个类型或变量的字节大小。 对于数组, sizeof  返回整个数组的字节大小。 对于指针, sizeof  返回指针本身的字节大小

    2024年01月25日
    浏览(55)
  • C++中sizeof()、size()、strlen()、length()详解

    1、size 是一个 函数 ,它是在程序运行时才会计算, 用来求数组或容器中元素的个数 。 在字符串string中它与length的作用相同,只是length只能应用于string中,而不能应用于STL的容器中 2、sizeof 为 运算符 , 其结果是求对应参数的字节大小 ,它的值是在编译的时候就计算完成了

    2024年04月16日
    浏览(40)
  • 【C语言】指针进阶之sizeof和strlen函数的对比

    目录  1.sizeofyu 2.strlen函数   3.sizeof与strlen的对比   sizeof计算变量所占内存内存空间 大小 的,单位是 字节 ,如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的大小。 sizeof 只关注占⽤内存空间的大小,不在乎内存中存放什么数据。 举个例子: 运行结果

    2024年01月22日
    浏览(55)
  • C++求字符串长度————sizeof()、size()、strlen()以及length()详解

    一、区分sizeof()和strlen() 首先, sizeof() 【操作数所占空间的字节数大小】是一种c中的 基本运算符 。(是操作符,并不是函数)可以以类型、指针、数组和函数等作为参数。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此 sizeof() 不

    2024年02月02日
    浏览(56)
  • C语言中常用的字符串函数(strlen、sizeof、sscanf、sprintf、strcpy)

      strlen即为string length,顾名思义该函数是用来求字符串长度的。在介绍strlen函数之前,我们要先介绍一下\\\"\\0\\\"这个转义字符。任何一个字符串后面都会隐藏一个\\\"\\0\\\",该转义字符是字符串结束的标志,所以我们在使用strlen函数求字符串长度时,遇到\\\"\\0\\\"时停止读取,此时\\\"\\0\\\"前的

    2024年01月18日
    浏览(54)
  • sizeof和strlen求取数组&指针之辨析

    目录 一维数组中sizeof Vs  strlen 整型数组sizeof 字符数组 sizeof strlen  字符串数组 sizeof strlen  字符串的指针char *p sizeof strlen  二维数组中sizeof  总结 今天主要来讲题目主要是数组指针辨析题和笔试题。🆗最近心情有点焦虑。大家一定专注眼前的事情,别太焦虑。 数组名:就是

    2024年02月07日
    浏览(43)
  • 【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现

    🔍个人主页 : @啊森要自信的主页 ✏️ 真正相信奇迹的家伙,本身和奇迹一样了不起啊! 欢迎大家关注🔍点赞👍收藏⭐️留言📝希望看完我的文章对你有小小的帮助,如有错误,可以指出,让我们一起探讨学习交流,一起加油鸭。 本小节我们将学习字符分类函数,字符

    2024年02月04日
    浏览(55)
  • 【C++】sizeof()、size()、length()的用法及区别

    在c++中,length()只是用来获取字符串的长度。在获取字符串长度的时候size()和length()函数作用相同。 size函数除了可以获取字符串长度外,还可以获取vector类型的长度。 在c++中,sizeof()用于获取数据类型或者变量所占内存空间的大小。可以通过sizeof计算获取数组元素个数。

    2024年02月14日
    浏览(42)
  • C语言----C语言中sizeof的用法

    sizeof是计算变量在内存的占空间的大小,单位是字节 (1)使用sizeof查看数据类型占空间大小 如下,可以查看C语言中各种基本数据类型的占用空间的大小 执行结果如下: (2)使用sizeof计算基本数据类型变量的占用空间的大小 如下,可以对基本数据类型的变量计算占用空间

    2024年02月06日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包