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个字节

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

目录
相关文章
|
6月前
|
编译器 C语言
sizeof,sizeof与strlen的区别
sizeof,sizeof与strlen的区别
54 0
sizeof,sizeof与strlen的区别
|
5月前
|
C语言
sizeof与strlen的使用及其区别
sizeof与strlen的使用及其区别
sizeof与strlen的使用及其区别
|
6月前
|
存储 编译器
strlen()和sizeof()的区别
strlen()和sizeof()的区别
48 0
|
11月前
strlen与sizeof的区别
strlen与sizeof的区别
71 0
sizeof和strlen的对比
sizeof和strlen的对比
51 0
sizeof与strlen练习
sizeof与strlen练习
51 0
|
机器学习/深度学习 C语言
sizeof与strlen的区别和详解
sizeof与strlen的区别和详解
112 0
详解strlen和sizeof在数组中的使用(二)
目录 一、前言 二、sizeof在字符数组中的题目 这整题sizeof的答案是: 32位平台下: 64位平台下:
137 0
详解strlen和sizeof在数组中的使用(二)
|
编译器 C++
详解strlen和sizeof在数组的中的使用(一)
目录 一、前言 二、sizeof和strlen他们各自是是什么?有什么区别? sizeof类型的题目 题目解析 : 32位平台下:​ 64位平台下:
346 0
详解strlen和sizeof在数组的中的使用(一)