首页 > 试题广场 >

已知char *a[]={ "fortran", " bas

[单选题]
已知char *a[]={ "fortran", " basic", "pascal", "java", "c++" };,则cout<<a[3];的显示结果是()
  • t
  • 一个地址值
  • java
  • javac++
<p>字符串型指针数组</p>
发表于 2020-09-06 21:07:17 回复(0)
int main()
{
    char *a[]={ "fortran", " basic", "pascal", "java", "c++" };
    printf("%.8p\n", a[3]);
    cout << a[3] << "--" << *a[3] << endl;

    char *b = "java";
    printf("%.8p\n", b);
    cout << b << "--" << *b << endl;

    int iValue = 1314;
    int *ptr = &iValue;
    printf("%.8p\n", ptr);
    cout << ptr << "--" << *ptr << endl;

    return 0;
}
Dev-C++ TDM-GCC4.9.2 64-bit
Result:
00488017
java--j
00488017
java--j
006ffe2c
0x6ffe2c--1314

1.首先a是一个数组,数组里的内容是char型指针,指针指向字符串

2.cout一个char型指针会打印其中内容,而cout一个int型指针会打印其地址

3.cout一个char型指针的解引用会打印这个指针指向的内容即上述的'j',cout一个int型指针的解引用也会打印这个指针指向的内容即上述的1314

4.char *ptr = "java";指针形式存储的字符串是字符常量,最好加上const,数组a也最好加上

编辑于 2018-08-06 11:10:39 回复(0)
这是一个指针数组,其本质是一个数组,数组中保存的char*类型的指针,a[3]就是第四个char*指针,而cout一个char*指针的话,打印的是一个字符串。如果数组中的类型是int*的话,cout出来就是地址,例如

编辑于 2020-05-02 19:31:54 回复(0)
char *a[4];
C++中,*(a+3)、a[3]一个意思,没有区别。
编辑于 2019-03-29 14:27:59 回复(0)
char *a[]   其实呢就等于  char a[][]
发表于 2021-02-08 17:06:28 回复(0)
数组里存放的是 char* 的指针 ,但是输出 a[3]的时候是一个字符串;注意,如果是 int* 的指针,输出的是地址。(这里注意,字符串是const char *,需要强制转换成 char*,不然报错)
发表于 2022-07-20 09:55:20 回复(1)
😷 c语言小白哪知道cout 怎么输出
发表于 2021-12-13 02:29:12 回复(1)
char * a[] 是指针数组 - “指针的数组” - 即数组 - 指向的是“DEF”的首地址,故a[]是数组
编辑于 2018-05-15 10:30:35 回复(0)
<<重载 char*输出字符串 其他输出地址
发表于 2022-04-06 08:02:28 回复(1)
首先要知道*a[]是一个指针数组,那它的本质还是一个数组,并且数组的每个元素都是一个char型的指针
发表于 2020-12-15 17:11:37 回复(0)
mad,c++的cout 我以为这是个量,左移呢
编辑于 2024-04-02 09:36:07 回复(0)
数组用的是一片连续的地址空间,“Java”后面没有结束符,为什么不会紧接着输出“C++”呢?
编辑于 2024-01-15 11:15:37 回复(0)

指针数组

发表于 2020-02-08 10:24:17 回复(0)