首页 > 试题广场 >

有以下程序,程序的输出结果是?

[单选题]

以下程序

#include <stdio.h>
void fun(char **p) {
    int i;
    for (i = 0; i < 4; i++)
        printf("%s", p[i]);
}
main() {
    char *s[6] = {"ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWX"};
    fun(s);
    printf("\n");
}

程序运行后的输出结果是?

  • ABCDEFGHIJKL
  • ABCD
  • AEIM
  • ABCDEFGHIJKLMNOP
循环输出前4个字符串,这个没啥深度。
发表于 2015-09-10 10:11:31 回复(0)
更多回答

“三鹰大魔王”是错误解析,大家别看他的!

正确解析:

char *s[6]={ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWX" };

以上语句定义了一个指针数组 s。首先这是一个数组,这个数组里存储的是指针,也就是说s[1], s[2] ...等存储的都是指针,类型是 char*

而数组名是指向第一个元素的常量指针,因此 s 是指向指针的指针,所以函数 fun 的形参定义是 char **

fun(s) 将指针 s 的值传递给形参 p,所以 p = s,因此

for(i=0;i<4;i + + )printf("% s",p[i]);

printf("% s",p[i]) 等价于 printf("% s",s[i])

注意,虽然 s[i] 中存储的不是字符串,而是 char * 类型的指针,但是 printf 还是会输出 s[i] 存储的指针指向的字符串。所以最后输出为 D。

发表于 2020-09-29 23:34:15 回复(4)
本题考查字符串数组,s表示指向字符数组的指针,s指向了第一个字符串,s + +指向了第二个字符串,所以最后输出结果为D选项。
编辑于 2021-08-19 18:20:02 回复(5)
如果打印语句加个*,如下所示:
printf("%s",*p[i]);
则选择C。

发表于 2019-11-27 20:22:56 回复(3)
实参 s为指针数组, 每个单元都是一个指针,fun函数的形参肯定是一个二级指针,输出字符串直接用数组首地址或者指针(此题为后者)即可.p[i]为每个字符串的首地址.
发表于 2020-02-27 20:34:00 回复(0)
打印的是p[i][0]即s[i][0]如果是用%d则打印首个字母,用%s将其所在位置的字符串内容全部打印。
发表于 2017-04-03 10:35:02 回复(6)
char *s[6]={ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWX" };
表示定义了包含6个char型指针的数组,指针指向的字符串存储在data区,所以传参用char **p
发表于 2016-07-20 10:15:20 回复(2)
S是数组指针(理解数组指针和指针数组就中间加一个的就好啦,数组的指针没错),s【i】表示存放地i-1个字符串的首地址,所以s输出第一个,s[1]第二个,一个输出前四个。
发表于 2020-03-09 10:37:43 回复(1)
第一个星表示指针数组,第二个星表示取向指针所指向的值
发表于 2022-01-22 15:39:15 回复(0)
少数了一个
发表于 2021-09-22 13:44:27 回复(0)
char 不是只能存储字节数组么 char * 怎么就可以字符串了?
发表于 2020-02-08 14:20:53 回复(0)
p是指向s的二级指针
发表于 2019-09-26 16:36:11 回复(0)
第一个星号表示指针数组,第二个星表示取指针所指向的值,注意下标从零开始
编辑于 2019-05-03 22:34:14 回复(0)
为什么不是a,?a那错了
发表于 2018-04-15 15:27:36 回复(1)

#include <stdio.h>
void fun( char ** p)
{
    int i;
    for(i=0;i<4;i + + )printf("% s",p[i]);
}
main( )
{
    char *s[6]={ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWX" };
    fun(s);   
    printf("\n");
}

发表于 2018-04-02 11:37:05 回复(0)
c选项应该打印的是“%c”
发表于 2017-08-10 15:58:51 回复(0)
指向字符数组的指针为什么可以这样定义😯
发表于 2017-03-26 23:32:58 回复(0)