首先我们看到第一题,题目要的是函数指针,那么变量名应与指针结合再与函数结合,我们可以看到C选项中的变量名满足条件,int(*fun)(int a,int b)先于指针结合再与函数(int a,int b)结合,且返回类型为int。
答案为C
我们看到题目要的是一个指向数组的指针,那么我们要找到一个数组指针,数组指针的变量名先与指针结合,再与数组结合,我们可以看到C选项中的(*p)[10]满足条件,然后题目又说数组指针其中每个元素是一个函数指针,那么(*p)[10]的类型应该是函数指针,即先与指针结合再与函数结合,可以看到C选项中的int (*(*p)[10])(int*)依然满足条件,函数形参类型为int*,返回类型为int。
答案为C
首先题目要我们选择的是错误的一项,首先我们来讲解一下回调函数的概念,此处我引用了用户昂刺鱼人工智能在一篇博客中解释,即
字面上的理解,回调函数就是一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数。这个过程就叫做回调。
其实也很好理解对吧,回调,回调,就是回头调用的意思。主函数的事先干完,回头再调用传进来的那个函数。
所以此处我们可以看到只有选项D并不符合解释,而且有点绕。
答案选D
首先我们要对题目函数进行定义,而定义函数应该用函数指针,函数指针的变量名先与指针结合再与函数结合,且形参的类型为 int 和 char*,我们可以看到只有选项B满足条件 ,而赋值中&fun和fun都是函数地址,故相同。
答案为B
这道题的具体思路是先将第一个元素取出,然后将其余元素左移,最后将第一个元素放在最后的位置。
下面用代码呈现
方法2的基本原理在下面用图片给大家展示
注意:这里要往左移动几个字符那么在左边逆序这个步骤就得逆序几个字符
若要用代码实现则为
该题的基本思路是将原始字符串旋转出所有的结果进行判断,若所有的结果中有与判断相同的结果那么则判定为该字符串为另外一个字符串旋转之后的字符串。
例如ABCD 那么我们尝试所有的结果 BCDA CDAB DABC ABCD,并拿这些结果依次与对照组对照看是否一致,若一至则为正确。
下面用代码实现
方法2
方法二的基本思路是将arr后面再加个arr,即arr[]="ABCDABCD",然后在对照arr,str时只用将初始位置往后移动就可以完成对arr所有情况的对照,而不用将arr字符串左旋。
代码如下:
如下方法用到几个函数,大家可以在网站 cplusplus.com 进行查找
其中strncat的作用是在字符串的后面追加一个字符串
strstr的作用是查找某字符串是否为另一个字符串的子字符串
这里str函数在一些版本为被弃用函数,有一定风险所以无法使用