一、sizeof 和 strlen 的对比
1.1 sizeof
1.2 strlen
1.3 sizeof 和 strlen 的区别
二、程序代练
2.1 一维数组
2.2 字符数组
2.3 字符串
2.4 指针
一、sizeof 和 strlen 的对比
1.1 sizeof
sizeof操作符,计算的是变量所占内存空间大小,单位是字节,若操作数是类型的话,计算的是使用类型创建的变量所占内存空间的大小。
它不关注内存中存放的是什么数据,只关注空间大小,返回值为size_t
例如:
整型变量a向内存空间申请4个空间大小,sizeof计算结果为4,与a中存放的常量10无关
1.2 strlen
strlen是C语言中的库函数,功能是求‘\0’之前字符串的长度。只有找到‘\0’才会停止,若没有‘\0’会一直向后找到为止,可能会造成越界访问。返回值为size_t
例如:
字符串“abcde”在‘\0’之前有5个字符,所以长度为5
1.3 sizeof 和 strlen 的区别
二、程序代练
2.1 一维数组
在看题之前,先回顾一下数组名表示什么:
一般情况下,数组名表示整个数组,但有两个例外
(1) sizeof(数组名)表示整个数组,计算的是整个数组大小,单位字节;
代码1:
2.2 字符数组
代码1:
看到sizeof 要先判断清楚:数组名代表的是什么,sizeof只关心内存大小
char类型数组每个元素代表一个字节
第一题:数组名单独放sizeof内部计算整个数组大小为 6
代码2:
strlen只关注‘\0’之前出现字符个数,在定义数组时我们在末尾没给它放‘\0’进去,strlen在计算的时候会一直向后访问(非法访问),什么时候找到‘\0’我们不可能知道所以是个随机值。
2.3 字符串
代码1:
第三题 和 第四题 :报错是因为非法访问‘a’和‘b’所指向的空间
2.4 指针
代码1:
第二题:指针加减一个数后还是指针,是指针在当前环境下就为 8
第四题:p[0] = *(p+0)获取到第一个元素,是char类型大小为 1
【有部分练习题没详细讲解,若有不懂欢迎评论区留言,必解答!】
结语:
深入理解指针从(1)到(5)已全部完整更完。学习是一个漫长而枯燥的过程,感谢广大读者一直以来的点赞和支持【比心】
学海无涯,学无止境,后续将持续更新其他知识点内容,让我们一起遨游在知识的海洋,相约美好未来吧【微笑】