![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
指针
文章平均质量分 57
Li----
这个作者很懒,什么都没留下…
展开
-
函数的介绍
第一个注意点是该函数是以/0为结束标志的,所以如果初始化的数组是 char arr[]={'a','b','c'};的话,strlen会生成一个随机值,因为该数组没有明确的定义/0的位置。追加的地方是从被追加数组的’ \0 ‘ 开始向后替换。在追加的结束位置依然是以 ‘\0’ 为标志,在最后 \0 被追加过去后结束。还有就是 被赋予值的目的地应是可修改的空间,而不是固定的空间,如以下代码就是不可修改而导致报错。此处还要注意strlen返回的值为无符号类型,在进行无符号整型类型的运算的时候不会出现负数,原创 2023-03-14 17:27:21 · 33 阅读 · 0 评论 -
指针联系的一些解析6
该题具有迷惑性的选项是BD,我们来分析一下,arr在传参到函数后实际上函数接受的是arr的首元素地址,即数组第一行的地址,此时我们在函数中接收的时候应该将arr传参看作是存放五个元素的一位数组,那么我们要存放这么一个一维数组就要用数组指针,我们可以看到C满足所有条件,故选C。首先我们看到&aa+1,此处的意思为跳过整个aa数组指向最后一个元素后面的地址,然后强行转换类型为int*,即整型类型。然后在printf中将ptr2向前移动一个地址,此时指向的为第一行最后一个元素的地址即6的地址,然后进行解引用。原创 2023-03-13 19:45:41 · 36 阅读 · 0 评论 -
指针练习的一些解析5
我们看到题目要的是一个指向数组的指针,那么我们要找到一个数组指针,数组指针的变量名先与指针结合,再与数组结合,我们可以看到C选项中的(*p)[10]满足条件,然后题目又说数组指针其中每个元素是一个函数指针,那么(*p)[10]的类型应该是函数指针,即先与指针结合再与函数结合,可以看到C选项中的int (*(*p)[10])(int*)依然满足条件,函数形参类型为int*,返回类型为int。这个过程就叫做回调。这道题的具体思路是先将第一个元素取出,然后将其余元素左移,最后将第一个元素放在最后的位置。原创 2023-03-12 14:53:46 · 48 阅读 · 0 评论 -
指针练习的一些解读4
此题的目的是让我们正确认识到数组指针和指针数组的区别,首先我写一个指针数组给大家看看,比方说int* arr[10],此处方格的优先级是先于*号,所以数组名arr先与[ ]结合形成数组,然后再与int*结合,故其称之为指针数组,即数组名先与[ ]结合就称为指针数组,指针数组的作用是数组中存放的是int*类型的元素,即存放指针。答案为D,因为&arr为数组arr一整个数组的地址,若要存放一整个数组的地址应该用数组指针存放,而D中p=&arr则是用一个整数指针存放,故为错误的。相关解题方法第三题有讲到。原创 2023-03-11 22:30:48 · 108 阅读 · 0 评论 -
指针练习的一些解读3
第四题是cpp[-1][-1]+1,我们可以看作为*(*(cpp-1)-1)+1,先看第一层,即cpp-1,注意此时cpp指向的位置是图1-2的内容,而不是图1-3,因为第三题中并没有对cpp进行修改,所以cpp-1后指向c+2的地址,解引用后得到c+2,然后*(cpp-1)-1,即将c+2减去1得到c+1,然后进行解引用得到NEW的首元素的地址,最后是*(*(cpp-1)-1)+1即从N向右移动一个地址,指向E,然后从E开始向右打印,最后结果为EW。该题我们先用图片了解一下初始的状态。原创 2023-03-11 07:29:28 · 49 阅读 · 0 评论