您好,欢迎来到纷纭教育。
搜索
您的当前位置:首页指针与strlen、sizeof的使用——深入理解指针(5)

指针与strlen、sizeof的使用——深入理解指针(5)

来源:纷纭教育

一、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)已全部完整更完。学习是一个漫长而枯燥的过程,感谢广大读者一直以来的点赞和支持【比心】

学海无涯,学无止境,后续将持续更新其他知识点内容,让我们一起遨游在知识的海洋,相约美好未来吧【微笑】

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- fenyunshixun.cn 版权所有 湘ICP备2023022495号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务