这两道C语言的指针题目,帮我解答一下,谢谢。

图片说明

11选D,12题选A
11题:函数指针的定义:我们可以使用 ( * 指针变量名) ([形参列表]);来定义一个函数指针

 如 int add(int a,int b ) 对应的函数指针为int (*pFun) (int ,int ) 来表示

a答案第二个形参char不对,原函数 void fun(intn,char * s){...}第二个形参是字符指针,不是char
b答案既不是函数指针,形参也不对。其中 void * 代表返回值是一个无类型的指针
c错误与b一样。同时函数体中赋值也不对

12题
函数的作用是将a的内容赋值给b所指空间。楼主错选c,可能是将“=”看成了“==”。"="是赋值操作,“==”是判断是否相等

11应该是D
12应该是A

11.A正确。原因:BC错在指针=非指针,C错在,还没说指哪里呢,就往指的位置写东西。

  1. void fun( char *a, char *b ) { while( (*b =*a)!='\0' ) { a++; b++; } } 典型的赋值操作。核心: *b = *a 就是把a指向的内容,赋给b所指的位置。 剩下的移动指针不用说了,判断要注意,与结尾符比较的,是括号里等号前的内容,即 *b 跟 ‘\0’比较。

11.D。函数指针,要保证函数的返回值和参数的类型相同。
12.A。先把*a赋值给*b,再判断*b是否为‘\0’,不为‘\0’指针后移一位

11 D 函数指针也是指针,所以*和函数名结合。(* 函数名)。void * 函数名 是指针函数,它返回值是指针。排除BC,
定义函数的时候,函数名就是函数的入口地址,所以不需要加取地址符&,所以A错误。
12 A while( (*b =*a)!='\0' ) 先把a所指内容赋给b所指内容,然后判断b所指内容是否是结束符,如果是,结束while循环,否则地址加1,继续赋值。
希望能帮到你!

11题,因为题目的函数fun带有两个参数,一个是int类型,一个是char* 类型,所以指针的类型和fun应该相同,所以选择D选项。
12题,因为while先是赋值并且判断结束符,所以肯定是在a把值给b呀,后面的++是为了指针的后移。

11是D
12是A

11 D
12 A

11D指针类型要和函数类型相同
12A

11D指针和函数类型相同
12A

11 D返回值类型要一致
12 A

11 D 指针类型要和函数类型相同
12 A

11 D
12 A

11 D 定义的指针类型要和被调用的函数里的指针类型一样
12 A *b=*a 这里是一个赋值操作

11 D返回值和类型要一致
12 A

11D指针类型要和函数类型相同
12A

第一题D,
第二题A

11 是D fun本身也是一个函数指针
12应该是A

第一题 D 因为函数指针赋值的时候,应该是pf=fun 或者是pf=&fun,所以对比之下,D是正确的。BC主要是混淆了指针函数和函数指针的定义,这个可以自己去看看相关的题。
第二题 A 可以看成a[] 和 b[]来看,比较看得懂,类似于复制。

11D
12A

11题D
12题A

DA
第二个就是复现strcpy的操作呀
先把*a赋值给*b,再判断*b是否为‘\0’,不为‘\0’指针后移一位 说得很清楚了

11D 可以参考C语言主函数中传递的参数,数组指针,如果你注意过的话
12 A 这个不应该有疑问

11 D
12 A

.

11 D
12 A

11 选D 函数返回值要和参数类型一致
12 选A 括号里面=是赋值 循环将a字符串赋值给b

11 D
12 A*b=*a是指将a所指的值赋给b所指内容直到全部传输完为止

11是D
12是A

11.D。函数指针定义,要保证函数的返回值和参数的类型相同,函数指针变量采用(* 函数指针变量名)的形式,定义后即可进行函数的赋值。
12.A。while循环,先把地址a指向字节复制到b指向的地址,然后再判断该值是否为'\0’,(即是否字符串结束),不为‘\0’a/b指针都后移一字节

11选D,12题选A