更多“单选题有定义:int a[5][4],(*p)[4]=a;,则*(*(p+2)+3)等价于()。A a[2][0]B a[2][1]C a[2][2]D a[2][3]”相关问题
  • 第1题:

    以下程序的输出结果是 ( ) main( ) { int a [10] = {1,2,3,4,5,6,7,8,9,10,},*p=a; printf("%d\n",* (p+2)); }

    A.3

    B.4

    C.1

    D.2


    正确答案:A

  • 第2题:

    若有程序片段: int a[12]={0},* p[3],* *pp,i for (i=0;i<3;i++) p[i]=&a[i*4]; pp=p; 则对数组元素的错误引用是 ( )

    A.pp[0][1]

    B.a[10]

    C.p[3][1]

    D.*(*(p+2)+2)


    正确答案:C

  • 第3题:

    有以下程序:includemain(){int a [10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3], *q=p+2;

    有以下程序: #include <stdio.h> main() { int a [10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3], *q=p+2; prinff("%d\n";*p+*q); } 程序运行后的输出结果是( )。

    A.16

    B.10

    C.8

    D.6


    正确答案:B
    解析:由变量的定义可知,指针变量p初始化为&a[3],即*P的值为4;指针变量q初始化为p+2,即&a[3]+2,所以*q的值为6,*p+*q的值为10。

  • 第4题:

    设有以下定义和语句 int a[3] [2] ={1,2,3,4,5, 6,}, *p[3]; p[0]=a[1]; 则*(p[0]+1)所代表的数组元素是

    A.a[0][1]

    B.a[1][0]

    C.a[1][1]

    D.a[l][2]


    正确答案:C
    解析:本题中首先定义了一个3行2列的数组a,一个长度为3的指针数组p,接着把地址a[1]赋给P[1]此时p[0]为a[1][0]的地址,p[0]+1为a[1][1]的地址,故*(p[0]+1)代表的元素为s[1][1]。所以,4个选项中选项C符合题意。

  • 第5题:

    执行以下程序段后,m的值为______。 int a[2][3]={ {1,2,3},{4,5,6} }; int m,*p; p=&a[0][0]; m=(*p)*(*(p+2))*(*(p+4));

    A.15

    B.14

    C.13

    D.12


    正确答案:A

  • 第6题:

    有以下定义: int a[4] [3]={1,2,3,4,5,6,7,8,9.10,11,12}; int(*ptr)[3]=a,*p=a[0]; 则下列能够正确表示数组元素a[1][2]的表达式是( )。

    A.*((*ptr+1}+2)

    B.*(*(p+5))

    C.(*ptr+1)+2

    D.*(*(a+1)+2)


    正确答案:C
    解析:本题定义了一个二维数组a,一个含有3个元素的指针数组ptr和一个指针变量p,并使指针数组和指针变量p指向数组a。

  • 第7题:

    若有定义语句:int m[][3]={1,2,3,4,5,6,7};,则与该语句等价的是

    A.int m[][3j={{1,2,3},{4,5,6},{i 7}};

    B.int m[][3]={{1,2},{3,4},{5,6,7}};

    C.int m[][3]={{1,2,3},{4,5},{6,7}};

    D.int nl[][3]={{1},{2,3,4},{5,6,7}};


    正确答案:A
    二维数组的初始化有两种方式,一种是分行初始化,方式为:数据类型数组名[行下标表达式][列下标表达式]={{第0行初值},{第1行初值表},…{最后l行初值表}};,如果初值表只对部分元素赋初值,没有被赋初值的元素将被自动赋值为0。另一种是按二维数组在内存中的排列顺序给各元素赋初值,这种方式就是不分行将所有数据依次列在一个花括号里,方式为:数据类型数组名[行下标表达式][列下标表达式]={初值表};,这种方式的赋值就是将初值表的数据依次赋予数组的每个元素,其中赋值是按照数组元素在内存中的位置进行的。题目中的初始化语句是第二种方法,如果用第一种方法应该是intm[][3]={{1,2,3},{4,5,6{,{7{};,这里应该保证除了最后一行,每一行都满列有3个元素,A选项正确。

  • 第8题:

    有如下定义: int a[5]={1,3,5,7,9},* P=a; 下列表达式中不能得到数值5的是( )。 A.a[2]SXB

    有如下定义: int a[5]={1,3,5,7,9},* P=a; 下列表达式中不能得到数值5的是( )。

    A.a[2]

    B.a[3]

    C.*(P+2)

    D.+P+4


    正确答案:B
    本题考查指向数组的指针,本题中指针变量P指向数组a,直接使用数组下标即可取值,数组F标是从0开始标号的,所以a[2]能取到5,而a[3]取不到5,(:选项中使用指针后移方法能够取到5,D选项中*P为1,所以*P+4为5。

  • 第9题:

    下列二维数组初始化语句中,正确且与语句int a[][3]={1,2,3,4,5}等价的是( )。

    A)int a[2][]={{1,2,3},{4,5));

    B)int a[][3]={1,2,3,4,5,0};

    C)int a[][3]={{1,0},{2,0},{3,0)};

    D)int a[2]={{1,2,3),{4,5,6)};


    正确答案:B

  • 第10题:

    设有以下定义: inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int(*ptr)[3]=a,*p=a[0]; 则下列能够正确表示数组元素a[1][2]的表达式是()。

    • A、*((*ptr+1)[2])
    • B、*(*(p+5))
    • C、(*ptr+1)+2
    • D、*(*(a+1)+2)

    正确答案:D

  • 第11题:

    单选题
    有定义:int a[5][4],(*p)[4]=a;,则*(*(p+2)+3)等价于()。
    A

    a[2][0]

    B

    a[2][1]

    C

    a[2][2]

    D

    a[2][3]


    正确答案: B
    解析: 暂无解析

  • 第12题:

    单选题
    设有以下定义: inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int(*ptr)[3]=a,*p=a[0]; 则下列能够正确表示数组元素a[1][2]的表达式是()。
    A

    *((*ptr+1)[2])

    B

    *(*(p+5))

    C

    (*ptr+1)+2

    D

    *(*(a+1)+2)


    正确答案: A
    解析: 暂无解析

  • 第13题:

    若有下面的程序片段:

    int[12]={0},*p[3],**pp,i;

    for(i=0;i<3;i)

    p[i]=&a[i*4];

    pp=p;

    则对数组元素的错误引用是

    A.pp[0][1]

    B.a[10]

    C.p[3][1]

    D.*(*(p+2)+2)


    正确答案:C
    解析:考查指向数组的指针。本题综合考查一维数组和多维数组指针变量的表示方法。在C语言中,引用数组元素的方法有两种,即下标法和指针法。下标法如a[i]形式;指针法如*(a+i)或*(p+1)。其中,a是数组名,p是指向数组的指针变量,其初值p=a。再如*(*(p+2)+2)是a[2][2]的值,注意语句中指针型数组的书写格式,不能写成"(*数组名)[长度]",因为这是定义指向含有"长度"个元素的一维数组的指针变量。例如有定义语句"int a,b,c,c,*p[3]={&a,&b,&c};",它定义了一个名为p的指针型数组,其3个元素p[0],p[1],p[2]分别指向f3个整型变量a,b,c。

  • 第14题:

    若有以下定义和语句,则对a数组元素地址的正确引用为 int a[2][3],(*p)[3]; p=a;

    A.*(p+2)

    B.p[2]

    C.p[1]+1

    D.(p+1)+2


    正确答案:C
    解析:本题考查了通过行指针来引用二维数组元素的方法。选项C中p[1]指向了数组a的第二行,p[1]+1则指向了第二行的第二个数据元素,其他几个选项都不正确。

  • 第15题:

    有如下定义: int a[5]={1,3,5,7,9}, * p=a; 下列表达式中不能得到数值5的是

    A.a[2]

    B.a[3]

    C.*(p+2)

    D.*p+4


    正确答案:B

  • 第16题:

    有以下定义和语句

    int a[3][2]={1,2,3,4,5,6,},*p[3];

    p[0]=a[1];

    则*p[0]+1)所代表的数组元素是

    A.a[0][1]

    B.a[1][0]

    C.a[1][1]

    D.a[1][2]


    正确答案:C
    解析:本题中a为三维数组,其中a[0],a[1],a[2]分别代表它的三维(的首指针),p为一个一维指针数组,含有3个元素,每两行代码把数组的第二维的首指针赋值给指针数组的第一个值,所 以,*  (p[0]  +1)即取p[0]所指数组的第二个值,即为数组a的第二维的第二个值,即为a[1] [1]。

  • 第17题:

    写出结果

    void foo(int p1[])

    {

    *p1 += 5;

    }

    void bar(int p2[])

    {

    p2[1] = 15;

    }

    void main()

    {

    int a[]={3,4,5};

    int b[]={3,4,5};

    int *p2;

    p2=&a[1];

    bar(p2);

    printf("%i %i %i\n",a[0],a[1],a[2]);

    p2=&b[0];

    p2++;

    foo(p2);

    bar(p2);

    printf("%i %i %i\n",b[0],b[1],b[2]);

    }


    正确答案:
     

  • 第18题:

    设有以下定义和语句: int a[3] [2]={1,2,3,4,5,6}, * p[3]; p[0] =a[1]; 则.(P[0]+1)所代表的数组元素是( )。

    A.a[0][1]

    B.a[1][0]

    C.s[1][1]

    D.a[1][2]


    正确答案:C
    解析:*p[3]是指针数组,它由3个指向整型数据的指针元素组成,p[0]=a[1]是将a数组第一行的首地址赋给第0个指针元素,p[0]+1表示a[1]+1即a[1][1]的地址,所以*(p[0]+1)表示a[1][1]。

  • 第19题:

    若有int a[]={2,4,6,8,10};int *p=a;则第2个数组元素的正确表示为 ______。

    A.*p++

    B.p+2

    C.&(p+2)

    D.*(p+2)


    正确答案:D

  • 第20题:

    设有以下定义: int a[3][3]={1,2,3,4,5,6,7,8,9}; int(*Ptr)[3]=a,*p=a[0]; 则下列能够正确表示数组元素a[1][2]的表达式是_______。

    A.*((*ptr+1)[2])

    B.*(*(p+5))

    C.(*ptr+1)+2

    D.*(*(a+1)+2)


    正确答案:D
    解析:*(p+5)所指向的数组元素是a[1][2],所以B不对;ptr所指向的是—个含有三个元素的一维数组,所以A和C是错误的。

  • 第21题:

    有定义:int a[5][4],(*p)[4]=a;,则*(*(p+2)+3)等价于()。

    • A、a[2][0]
    • B、a[2][1]
    • C、a[2][2]
    • D、a[2][3]

    正确答案:D

  • 第22题:

    以下数组定义中错误的是()

    • A、int x[][3]={0};
    • B、int x[2][3]={{1,2},{3,4},{5,6}};
    • C、int x[][3]={{1,2,3},{4,5,6}};
    • D、int x[2][3]={1,2,3,4,5,6};

    正确答案:B

  • 第23题:

    单选题
    设有以下说明和语句:int x[3][4],(* p)[4];p=a;则与表达式*(*p+2)等价的选项是(  )。
    A

    a[0][2]

    B

    *(a+2)[0]

    C

    (*a+2)[0]

    D

    a[2][0]


    正确答案: D
    解析:
    (*p)[4]是指向有4个元素的数组指针,a为二位数组首地址,赋值给数组指针p。题目中表达式*(*p+2)是对数组a第1行第3列元素a[0][2]的引用。a[0][2]是数组第1行第3列元素,与题目中等价,A项正确。*(a+2)[0]是对数组第3行第1列元素的引用,B项错误。(*a+2)[0]是对数组第1行第3列元素的引用,C项错误。a[2][0]是数组第3行第1列元素,D项错误。答案选择A选项。

  • 第24题:

    单选题
    有如下定义:int a[5]=1,3,5,7,9,*p=a;下列表达式中不能得到数值5的是(  )。
    A

    a[2]

    B

    a[3]

    C

    *(p+2)

    D

    *p+4


    正确答案: B
    解析:
    A项,a[2]是数组的第三个元素,即5;B项,a[3]是数组的第四个元素,即7;C项,*p = a[0],*(p+2) = a[2] = 5;D项,*p = a[0] =1,*p+4 = 5。