如有下面初始化定义: char a[]="program"; char b[]={'p','r','o','g','r','a','m'}; 则下列说法正确的是( )。A.a和b代表的数组内容完全相同,所占存储单元的数目相同B.a和b代表的数组内容不同,所占存储单元的数目相同C.a和b代表的数组内容完全相同,所占存储单元的数目不同D.a和b代表的数组内容不同,所占存储单元的数目不同

题目

如有下面初始化定义: char a[]="program"; char b[]={'p','r','o','g','r','a','m'}; 则下列说法正确的是( )。

A.a和b代表的数组内容完全相同,所占存储单元的数目相同

B.a和b代表的数组内容不同,所占存储单元的数目相同

C.a和b代表的数组内容完全相同,所占存储单元的数目不同

D.a和b代表的数组内容不同,所占存储单元的数目不同


相似考题
更多“如有下面初始化定义:char a[]="program";char b[]={'p','r','o','g','r','a','m'};则下列说法正 ”相关问题
  • 第1题:

    若有如下程序段: include using namespace std; int main() {char*p="abcdefgh",*r;l

    若有如下程序段:

    include <iostream>

    using namespace std;

    int main()

    {

    char *p="abcdefgh",*r;

    long *q;

    q=(long *)p;q++;

    r=(char *)q;

    cout<<r<<end1;

    return 0;

    }

    该程序的输出结果是______。


    正确答案:efgh
    efgh 解析:本题定义了一个字符型指针变量p,并通过赋初值让它指向了一个字符串,还定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句“a=(long*)p;”,把p的地址值强制转换为长整型地址值并赋值给小然后执行“q++”,地址值增加了4,执行语句“r=(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址。最后输出r指向的字符串。

  • 第2题:

    有以下程序: void funl(char*p) { char*q; q=P; while(*q!=\O) {(*q)++;q++;} } main { char a[]={"Program"),*P; p=&a[3];funl(p); printf("%s\n",a); } 程序执行后的输出结果是( )。

    A.Prohsbn

    B.Prphsbn

    C.Progsbn

    D.Program


    正确答案:A
    本题中使用了函数的调用,由{unl函数中的while循环可知,循环的作用是为了把q所指向的内容增加l,而从主函数传到函数时是从下标为3开始传,因此当调用函数执行完后,传过去的字符串为hsbn,前面不变。

  • 第3题:

    以下程序的结果是()。includevoid main(){char*p="abcdefgh",*r;long*q;q=(1ong*)P;

    以下程序的结果是( )。 #include<iostream.h> void main() {char*p="abcdefgh",*r; long*q; q=(1ong*)P; q++; r=(char*)q; cout<<r<<endl;=

    A.defg

    B.cdef

    C.ghab

    D.efgh


    正确答案:D

  • 第4题:

    以下程序的输出结果是【 14 】

    #include <stdio.h>

    #include <stdio.h>

    #include <stdlib.h>

    #include <string.h>

    main( )

    { char *p,*q,*r,

    p=q=r=(char*)malioc( sizeof(char)*20);

    strcpy(p,"attaboy,welcome!");

    printf(”%c%c%c\n”,p[ 11 ], q[ 3 ],r[ 4 ]);

    free(p);

    }


    正确答案:
    【答案】cab
    【知识点】malloc函数与指针变量的使用
    【解析】pqr三个指针指向同一个具有20个字符空间的地址。Strcpy函数的作用是将字符串attaboy,welcome!复制到p指针所指向的空间。所以打印时打印的p[11], q[3],r[4]分别为c,a,b。

  • 第5题:

    以下程序的结果是 include void main( ) { char * p="abcdefgh",* r; long *

    以下程序的结果是 #include<iostream.h> void main( ) { char * p="abcdefgh",* r; long * q; q=(long * )p; q++; r=(char * )q; cout < < r < < end1;}

    A.defg

    B.cdef

    C.ghab

    D.efgh


    正确答案:D
    解析:C++语言规定,如果指针变量q已指向数组中的一个元素,则(q++指向同一数组中的下一个元素(而不是将q的值简单的加1)。本题中q是long型指针,每个long型数据占内存字节数为4,所以q++则由当前位置向右移动4个字节,所以最后显示出的是efgh。注意:请注意*(P++)与(*p)++的区别。