目录

C语言长期更新第15讲-指针详解五习题实战

C语言(长期更新)第15讲 指针详解(五):习题实战

C语言(长期更新)第15讲

指针详解(五):习题实战

跟着潼心走,轻松拿捏C语言,困惑通通走,一去不回头~欢迎开始今天的学https://i-blog.csdnimg.cn/direct/a45374f8c1584c0ca7bb11f3a2065f6f.jpeg


知识回顾

上节课我们学习了指针的部分内容,对基础内容有了扎实的掌握,今天我们来继续学习几种特殊的指针,坐稳了,我们发车,gogogo,出发喽!



15.1 sizeof和strlen的对比

15.1.1 sizeof

前面学习操作符时,我们学到了sizeof

sizeof计算的是变量所占内存空间的大小,单位是字节

操作数是类型时,计算的是类型创建的变量所占内存空间的大小

sizeof只关注操作数占用内存空间的大小,不关心具体放的内容

https://i-blog.csdnimg.cn/direct/3f9fdd54c76542cf9204c0f9c851143b.png

注意写法

15.1.2 strlen

strlen是C语言的库函数,功能是求字符串的长度

函数原型如下

https://i-blog.csdnimg.cn/direct/5f2322cc98ca443f967d639f15e778da.png

统计的是strlen函数的参数str中这个地址后,\0 前字符串中字符的个数

strlen函数会一直向后查找直到找到 \0 ,所以可能存在越界查找

https://i-blog.csdnimg.cn/direct/f297a6617fab44b9aee1e21999afb252.png

在使用时尤其需要小心这些问题

15.1.3 对比

  1. sizeof是操作符;strlen是库函数,使用时需包含头文件string.h
  2. sizeof计算操作数所占内存的大小,单位是字节;strlen求字符串长度,统计的是 \0 前的字符数
  3. sizeof不关注内存放的是什么数据;strlen关注内存中是否有\0

15.2 数组指针笔试题解析

15.2.1 一维数组

https://i-blog.csdnimg.cn/direct/16cac650d1e04485b0dd379e54e25502.png

15.2.2 字符数组

代码1

https://i-blog.csdnimg.cn/direct/8d0974655b7d4ae991ad46f11b47f90b.png

代码2

https://i-blog.csdnimg.cn/direct/d8bcf514aefc4fdea1084ea1197352bf.png

代码3

https://i-blog.csdnimg.cn/direct/39dd17e1972643ac9a9de8c580882361.png

代码4

https://i-blog.csdnimg.cn/direct/aaf2a20b7f52409b82fc1454e4f99cf6.png

代码5

https://i-blog.csdnimg.cn/direct/191aa3a9902d42658e4694288840c0d7.png

代码6

https://i-blog.csdnimg.cn/direct/f85e01f3e13f4f1fa365cbeee41eb8c0.png

15.2.3 二维数组

https://i-blog.csdnimg.cn/direct/fc248052dff74540ba9bba611dc2e892.png

数组名的意义:

  1. sizeof(数组名),这⾥的数组名表示整个数组,计算的是整个数组的大小。

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

  3. 除此之外所有的数组名都表是首元素的地址。

15.3 指针运算笔试题

题目一

https://i-blog.csdnimg.cn/direct/f666d7cfbca043e3b071fe23506e75c9.png

题目二

https://i-blog.csdnimg.cn/direct/f841c127e7b045f4815af1315d09cc6f.png

题目三

https://i-blog.csdnimg.cn/direct/ffb6141495334613836abbc6906472d6.png

题目四

https://i-blog.csdnimg.cn/direct/13f99d2e48714c6aa5964d69e855deba.png

https://i-blog.csdnimg.cn/direct/873f383b537d457790a8491ed5852d10.png

1.指针-指针的前提是两个指针指向同一块空间
2.指针-指针得到的结果的绝对值是两个指针之间的元素个数
小地址-大地址会得到负数
%p打印地址时,直接将内存中的值,当做地址打印
10000000 00000000 00000000 00000100      -4
11111111  11111111  11111111 11111011
11111111  11111111 11111111  11111100
FF            FF           FF            FC

题目五

https://i-blog.csdnimg.cn/direct/7579aa81fd064e98bd487211761f8011.png

题目六

https://i-blog.csdnimg.cn/direct/6141bba9165a42adbae97f578bbc624c.png

题目七

https://i-blog.csdnimg.cn/direct/92c85a21b8fc416592db2e4ee4de66d1.png

第一次打印得到POINT

https://i-blog.csdnimg.cn/direct/9b9fe826589b414abc17f04311fc97aa.png


好了今天的学习内容就到这里啦,谢谢你的陪伴,我是潼心,下次再见如果这篇文章对你有帮助的话。请务必给主播一个一键三连,球球了,这对主播很重要https://i-blog.csdnimg.cn/direct/898a54b542a846db99d911dd5e05fb98.gif 

博主主页: