【C语言之区分sizeof 和 strlen】

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

详解C语言sizeof 和 strlen

前言:
首先,我们需要明白它们的根本区别,sizeof属于关键字也属于单目操作符,而strlen属于库函数

/知识点回顾/

1、单目操作符

单目操作符:单目运算符对应只有一个操作数
常见的单目操作符:

常见的单目操作符 描述
逻辑非
’ - ‘
’ + ‘
& 取地址
sizeof 计算一个数据类型的大小
~ 取反
减减
++ 加加
’ * ’ 解引用
( ) 强制类型转换

1.1、详解sizeof单目操作符

先大概看一下关于sizeof的技术文档

sizeof expression

The sizeof keyword gives the amount of storage, in bytes, associated,with a variable or a type (including aggregate types).
This keyword,returns a value of type size_t.
The expression is either an identifier or a type-cast expression (a type specifier enclosed in parentheses).
When applied to a structure type or variable, sizeof returns the actual size, which may include padding bytes inserted for alignment.
When applied to a statically dimensioned array, sizeof returns the size of the entire array.
The sizeof operator cannot return the size of dynamically allocated arrays or external arrays.

说明

运算符表达式sizeof关键字给出与变量或类型(包括聚合类型)相关联的存储空间(以字节为单位)
该关键字返回size_t类型的值
表达式要么是标识符,要么是类型强制转换表达式(用圆括号括起来的类型说明符)。
当应用于结构类型或变量时,sizeof返回实际大小,其中可能包括为对齐而插入的填充字节。
当应用于静态维度数组时,sizeof返回整个数组的大小
sizeof操作符不能返回动态分配的数组或外部数组的大小

小结
sizeof的功能是计算一个数据类型的大小,这个类型可以是数组、函数、指针、对象等,单位为字节,它的返回值是size_t类型,也就是unsigned int类型,是一个无符号整数。
注意:sizeof不是一个函数,它是一个运算符,所以它不需要包含任何头文件。

1.2、sizeof代码部分

接下来通过代码例程分解sizeof各个知识点:
1.返回size_t类型的值,sizeof返回实际大小,可能包括为对齐而插入的填充字节
2.当应用于静态维度数组时,sizeof返回整个数组的大小
3.sizeof操作符不能返回动态分配的数组或外部数组的大小

1.2.1、sizeof例程1

说明
返回size_t类型的值(无符号整型),sizeof返回实际大小,可能包括为对齐而插入的填充字节(如:空格)

/*例程1*/
#include <stdio.h>
int main()
{
	printf("size_t1 = %d\n", sizeof(int));//sizeof参数可以是类型,这里返回的就是int型字节大小
	int a = 10;
	printf("size_t2 = %d\n", sizeof(a));//计算a所占用的空间大小,单位是字节,且a为整型变量
	char b = 'B';
	printf("size_t3 = %d\n",sizeof(b));//计算a所占用的空间大小,单位是字节,且b为字符型变量
	char arr1[] = "hello";
	printf("%d\n",sizeof(arr1));
	//计算包括为对齐而插入的填充字节(如:空格)
	char arr2[] = "h e l l o";
	printf("%d\n", sizeof(arr2));
	return 0;
}

如图所示

【C语言之区分sizeof 和 strlen】

1.2.2、sizeof例程2

说明
当应用于静态维度数组时,sizeof返回整个数组的大小

/*例程2*/
#include <stdio.h>
int main()
{
	char arr[10] = { 0 };
	//计算arr数组元素所占用的空间大小,单位是字节
	printf("%d\n", sizeof(arr[1]));//1

	printf("%d\n", sizeof(arr));//10---char数组字节1---10个就是1*10 = 10
	//同理:int类型那么就是10*4 = 40
	return 0;
}

如图所示
【C语言之区分sizeof 和 strlen】

1.2.3、sizeof例程3

说明
sizeof操作符不能返回动态分配的数组或外部数组的大小(特别易错)

/*例程3*/
#include <stdio.h>
int main()
{
	short a = 5;
	int b = 10;
	printf("%d\n", sizeof(a = b + 2));//输出2 ---- 单位字节,仍为short类型
	//注意:小的空间内存放不进比它大的数据,会数据截断,仍为short类型,a+2也不会运算
	//且sizeof(参数),参数的计算不对参数外起作用
	printf("%d\n", a);//输出5 ---- a+2也不会运算

	int arr1[] = { 1,2,3,4 };
	int arr2[] = { 1, 2, (3, 4), 5 };
	//注意:这里的(3,4)是逗号运算符,计算结果作为数组的元素,数组类型相同元素个数相同,所以字节空间大小相同
	printf("%d\n", sizeof(arr1));//16
	printf("%d\n", sizeof(arr2));//16
	return 0;
}

如图所示
【C语言之区分sizeof 和 strlen】

2、详解strlen函数

老规矩先看一下关于strlen函数的技术文档:
【C语言之区分sizeof 和 strlen】
说明

Return Value

Each of these functions returns the number of characters in string,
excluding the terminal NULL. No return value is reserved to indicate an error.
原型:size_t strlen( const char *string );

小结
1.返回类型仍然是size_t类型,参数为字符串类型,const是修饰为不可改变的变量
2.strlen的功能是计算一个指定字符串的长度,函数原型是size_t strlen(const char *s),它的返回值是size_t类型,也就是unsigned int类型,返回的是字符串的长度
3.需要包含头文件#inlude <string.h>,参数s是字符串首地址

注意:strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,不是类型占内存的大小,不包括’\0’。strlen是不会计算’\0’之后的长度的。

2.1、strlen代码部分

接下来通过代码例程了解strlen知识点:
1.返回size_t类型的值,strlen返回字符串长度

2.1.1、strlen例程1

说明
返回size_t类型的值,strlen返回字符串长度

/*例程1*/
#include <stdio.h>
#include <string.h>
//使用strlen函数,需要调用头文件 ---- <string.h>
int main()
{
	char arr[] = "hello";
	printf("%d\n",strlen(arr));//计算字符串长度,不包括'\0'
	return 0;
}

如图所示
【C语言之区分sizeof 和 strlen】

3、区别strlen函数和sizeof操作符

小结
a、sizeof会将空字符\0计算在内,而strlen不会将空字符\0计算在内。
b、sizeof是操作符(关键字),它结果类型是size_t,它在头文件中typedef为unsigned_int类型,而strlen是函数。
c、sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以’‘\0’'结尾的。

3.1、sizeof( )和strlen( )的运用例程1
/*例程1*/
#include <stdio.h>
#include <string.h>
int main()
{
	char str[] = "hello bit";
	//hello bit\0
	printf("%d %d\n", sizeof(str), strlen(str));//10 9
	//strlen()函数求字符串长度
	//sizeof关键字计算变量/类型所占用的内存大小,单位字节
	return 0;
}

4.结束语

相信看到这里大家对于strlen是什么?和sizeof是什么?有了更加深入的理解了,如果对你有所帮助,不要客气一件三连哦让更多人阅读,谢谢您勒!文章来源地址https://www.toymoban.com/news/detail-506640.html

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

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

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

相关文章

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

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

    2024年01月22日
    浏览(44)
  • C语言之数组与strlen与sizeof区别和应用

    1.strlen 和 sizeof没有什么关联 2.strlen 是求字符串长度的-只能针对字符串求长度 - 库函数 - 使用得引头文件 3.sizeof 计算变量、数组、类型的大小-单位是字节 - 操作符 #includestdio.h int main() {     char arr1[] = \\\"abc\\\";     char arr2[] = { \\\'a\\\',\\\'b\\\',\\\'c\\\' };     printf(\\\"%dn\\\", sizeof(arr1));//4      

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

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

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

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

    2024年01月18日
    浏览(37)
  • strlen和sizeof的区别

    相信大多数初步了解C语言的小伙伴们,应该对strlen和sizeof都不陌生,但是在使用时总会出现或多或少的疑问,我将用这一篇博客解决困扰大家许久的问题( 仅此一篇你就会了解的透彻 ),请耐心阅读!!! 在深究strlen和sizeof的区别时,首先我们需要知道这两个函数所执行的

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

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

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

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

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

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

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

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

    2024年02月06日
    浏览(31)
  • C语言 strlen()函数

    一、strlen()函数的简介         strlen函数:计算的是字符串str的长度,从字符的首地址开始遍历,以 \\\'\\0\\\' 为结束标志,然后将计算的长度返回,计算的长度并不包含\\\'\\0\\\'。下面是库中的strlen()函数: size_t  strlen (const char* str); 函数的参数为------const char* str:字符指针

    2024年02月16日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包