问题详情

有以下程序#include <stdio.h>void fun(char **p){ p=p+2; printf("%s\n",*p);}main(){ char *a[]={"Morning","Afternoon","Evening","Night"}; fun(a);}程序的运行结果是A.rningB.afternoonC.ternoon D.Evening


A、rning

B、afternoon

C、ternoon

D、Evening

时间:2022-01-03 23:03 关键词:

答案解析

D
本题主要考查指向指针的指针。在程序中,首先定义了一个fun函数,函数无返回类型,函数的形参是一个指向指针的指针变量p,在该函数体中,首先将变量p的值加2,并保存在p中,根据指针变量的特性,这个加2是使指针变量往后移两个单位,如果开始指向第一个元素,现在则指向第三个元素(注意:这里并不是指移动两个字节)。然后输出*p,由于p是一个指向指针的变量,那么*p输出的也不是单个数组,而是一个首地址对应的字符串或数组,在本题中输出的是字符串。在主函数中,定义一个指针数组a,并赋初值,然后调用函数fun,实参为a,输出的应该是指针数组中第3个指针对应的字符串,即Evening。