首页 > 试题广场 >

下列程序的输出结果为: #include void main

[单选题]
下列程序的输出结果为:

#include <stdio.h>
#include <string.h>

void main() {
    char* a[] = {"hello", "the", "world"};
    char** pa = a;
    pa++;
    printf("%s\n", *pa);
}


  • theworld
  • the
  • hello
  • hellotheword
都没排好版,看着真费劲啊
发表于 2015-06-09 17:44:12 回复(0)
char* a[]={"hello","the","world"};
//定义了一个char型指针数组即字符串指针,分别指向“hello”,“the”,“world”
char** pa=a;//定义了一个char型二级指针,指向一个指针数组
pa++;//二级指针偏移,指向“the”
因此*pa输出the
编辑于 2016-07-03 21:24:15 回复(0)
就没人注意到头文件都没包吗,太不严谨了吧
发表于 2019-03-18 17:14:58 回复(0)
vs2008运行结果。
发表于 2016-07-29 09:50:23 回复(0)
分析:a是指针的数组
char** p = a; //char** p = &a[0]
p++;//p是指针自增+4,而a中元素是指针,每个正好四个字节,因此p++后恰好p= &a[1] *p=a[1];输出"the",输出结果为B
编辑于 2021-08-19 15:15:24 回复(2)
char* a[]={"hello","the","world"};
char** pa=a;//定义了一个char型二维指针,指向一个指针数组
pa++;//二级指针偏移,对pa自增或自减都是对对二维数组 行的操作,那么*pa为“hello”,*(pa+1)指向第二行就是 “the”
因此*pa输出the
编辑于 2016-09-05 14:57:55 回复(0)
分析:a是指针的数组
char** p = a; //char** p = &a[0]
p++;//p是指针自增+4,而a中元素是指针,每个正好四个字节,因此p++后恰好p= &a[1] *p=a[1];输出"the",输出结果为B
发表于 2014-11-13 18:12:21 回复(0)

关于指针的自增

指针有两个属性:类型和值。
指针自增,就是指针增加一个指向类型的长度。
例如指向char的指针ptr自增,那ptr的值就会增加char所占的内存大小,即1字节。
那这里指向char*类型的指针pa自增,pa的值就会增加char*类型所占的大小,即一个指针所占的大小4字节(32位机)。

//声明了一个指针数组a。数组中的元素全部都是指向char类型的指针(char*)。
char* a[ ] = { "hello", "the", "world"};
//声明了一个二级指针pa。pa是指向char*类型的指针!
//即pa是指向 char*(指向char类型的指针) 类型的指针,pa的值是指针数组a的首地址。
char** pa = a;
//pa++,即pa的值增加指针类型所占大小,即4字节。
//原来pa的值是数组指针a的首元素地址,现在pa的值是指针数组第二个元素的地址。
pa++;
//对pa解引用得到的是一个数组指针,就是指针数组a第二个元素,即"the"的地址。
cout<<*pa<<endl
发表于 2019-11-27 20:37:32 回复(0)
char* a[ ]:指针数组数个指针:因为[]优 先级高于*; char(*a) [ ]:数组指针指向数组:因为()优 先级高于[]。
编辑于 2019-03-16 00:35:44 回复(0)

解析如下:

  • 定义了一个字符串指针数组a,包含3个指向字符串常量的指针。
  • 创建了一个指向字符串指针数组的指针pa,并使其指向数组a的第一个元素。
  • 执行pa++ 将指针pa递增1,此时指针pa指向数组a的第二个元素。
  • 最后使用 *pa 访问指针pa所指向的字符串指针,即 "the"。

因此,最终输出结果为 "the"。

发表于 2023-10-18 19:53:17 回复(0)
凭什么一个指针4个字节 这题目出的一坨翔
发表于 2023-03-21 20:27:20 回复(0)
#include
void main()
{
       char* a[ ] = { "hello", "the", "world"};//定义了一个char型二维指针,指向一个指针数组
       char** pa = a;//二级指针偏移,对pa自增或自减都是对对二维数组 行的操作,那么*pa为“hello”,*(pa+1)指向第二行就是 “the”
       pa++;
       cout<<*pa<<endl;
}
发表于 2021-06-08 16:36:17 回复(0)
可以将a数组看做是一个二维数组,p也指向该二维数组,p=&a[0],又因为二维数组名的步长为一行元素的长度,故p++之后*p指向二维数组的第二行,即指向"the"这个字符串。
发表于 2021-01-25 21:15:38 回复(0)
其实到了pa++这一步我都能看得懂,但是最后一步count<<*pa<<这一步我就看不懂了,望大神指点指点
发表于 2020-01-20 19:11:57 回复(1)
为什么输出的不是ello,因为*pa=“hello”,所以pa指向hello这个字符串,pa++,指针指向第二个字符,求大佬解答。
发表于 2018-08-14 09:29:52 回复(0)