strlen和sizeof详解

简介: strlen和sizeof详解

大家好,我是晓星航。今天为大家带来的是strlen和sizeof在一维数组和二维数组中的计算与详细的解析!😀

1.一维数组strlen和sizeof的比较

1.1sizeof和strlen概念区分:

sizeof只关注占用空间大小,单位是字节,不关注类型,是操作符

strlen关注的字符串中\0的位置,计算的是\0之前出现了多少个字符,只针对字符串,是库函数

1.2特殊情况:

数组名是数组首元素的地址

这里有两个例外:

sizeof(数组名),这里的数组名是整个数组的,计算的是整个数组的大小,单位是字节。

&数组名,这里的数组名也表示整个数组,取出的是整个数组的地址

出上面两种特殊情况外,所有的数组名都是数组首元素的地址

1.3一维数组的例题讲解

一维数组:

当大家初看这些题目的时候是不是会感到很迷茫?没关系接下来晓星航将带领大家一步一步分析他们。

我们先给大家分析一下他们的结果。接下来验证我们的分析是否正确?!

这里我们要注意的是在32位和64位下的大小是不一样的。例如这里的指针在32位下是4个字节,而在64位下是8个字节。

1.4字符数组的例题讲解

例题一:

大家还是要先分析分析题目,自己先做一遍然后看讲解哦!

我们先给大家分析一下他们的结果。接下来验证我们的分析是否正确?!

注意:sizeof只关注占用空间大小,单位是字节,不关注类型,是操作符
strlen关注的字符串中\0的位置,计算的是\0之前出现了多少个字符,只针对字符串,是库函数

这里我们先将内存访问冲突的代码屏蔽掉,再验证结果,显然结果和我们分析的一样

例题二:

大家还是要先分析分析题目,自己先做一遍然后看讲解哦!

我们先给大家分析一下他们的结果。接下来验证我们的分析是否正确?!

这里我们先将内存访问冲突的代码屏蔽掉,再验证结果,显然结果和我们分析的一样

例题三:

大家还是要先分析分析题目,自己先做一遍然后看讲解哦!

我们先给大家分析一下他们的结果。接下来验证我们的分析是否正确?!

这里我们先将内存访问冲突的代码屏蔽掉,再验证结果,显然结果和我们分析的一样

1.5二维数组的例题讲解

大家还是要先分析分析题目,自己先做一遍然后看讲解哦!

我们先给大家分析一下他们的结果。接下来验证我们的分析是否正确呢?!

很明显我们的分析是对的!

这里我们对二维数组做个总结:

如果是a :

情况1:单独放置就表示整个数组

情况2:没有&,没有单独放在sizeof内部,a就表示首行元素地址,即第一行地址

情况3:a+1 没有&,没有单独放在sizeof内部, 即a表示第一行的地址+1 为第2行的地址

如果是a[0]:

情况1:单独放置表示第一行的数组名 sizeof计算的就是第一行的大小

情况2:没有&,没有单独放在sizeof内部,a[0]就表示首元素地址,即第一行第一列的元素地址

情况3:&a[0]+1 因为这里有&,所以a[0]表示第一行的地址 +1就表示为第二行的地址 如若用sizeof计算的话就是4/8个字节

感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘

目录
相关文章
|
7月前
|
编译器 C语言
sizeof,sizeof与strlen的区别
sizeof,sizeof与strlen的区别
67 0
sizeof,sizeof与strlen的区别
|
2月前
|
编译器 C++
sizeof 和 strlen 的区别
`sizeof` 和 `strlen` 是 C 和 C++ 中常用的运算符/函数,功能和用途不同
72 11
|
7月前
|
存储 编译器
strlen()和sizeof()的区别
strlen()和sizeof()的区别
57 0
|
7月前
|
Serverless
sizeof和strlen的区别【详解】
sizeof和strlen的区别【详解】
62 0
|
C语言
strlen和sizeof的区别
strlen和sizeof的区别
91 0
strlen与sizeof的区别
strlen与sizeof的区别
91 0
sizeof和strlen的对比
sizeof和strlen的对比
54 0
sizeof与strlen区别
sizeof是关键字,参数可以是各种数据(包括函数,类型,对象,数组,指针……)用于计算数据所占字节大小 strlen是函数,参数类型必须是字符型指针(char *),用于计算字符串,从字符串的第一个地址开始遍历,直到遇到‘\0’停止
87 0
sizeof与strlen练习
sizeof与strlen练习
55 0
|
存储 编译器 C++
sizeof 与strlen的区别与联系
sizeof 与strlen的区别与联系
120 0
sizeof 与strlen的区别与联系