参考答案和解析
C A项t[3][2]数组下标越界,B项同理,D项表示的为数组元素非地址
更多“若有定义int t[3][2];能正确表示t数组元素地址的表达式是()。”相关问题
  • 第1题:

    若有定义int b[8],*p=b;则p+6表示( )。

    A.数组元素b[6]的值

    B.数组元素b[6]的地址

    C.数组元素b[7]的地址

    D.数组元素b[0]的值加上6


    正确答案:B
    解析: 指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中将p+6指的是将指针向后移动了6个存储单元,指向b[6],存放的是b[6]的地址。

  • 第2题:

    若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是

    A.a[2][!1]

    B.a[2][3]

    C.a[0][3]

    D.a[1>2][!1]


    正确答案:D
    解析:C语言中数组下标是从0开始的,所以二维数组a[2][3]的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示数组元素a[0][0]。

  • 第3题:

    若有定义int a[9],+P=a;,则P+5表示( )。A.数组元素a[5]的值B.数组元素a[5]的地址SXB

    若有定义int a[9],+P=a;,则P+5表示( )。

    A.数组元素a[5]的值

    B.数组元素a[5]的地址

    C.数组元素a[6]的地址

    D.数组元素a[0]的值加上5


    正确答案:B
    本题考查了通过指针来引用一维数组元素的方法。题中*P=a;这一赋值语句是指针P指向了数组a的首地址,P+5是指针P向后移动了5个int类型的存储单元,所以P+5指向了数组元素a[5]。

  • 第4题:

    若有以下定义:int t[3][2];,能正确表示t数组元素地址的表达式是______。

    A.&t[3][2]

    B.t[3]

    C.t[1]

    D.*t[2]


    正确答案:C
    解析:A和B两个表达式都已越界了;*t[2]是目标变量,即一个整数,而不是地址值。

  • 第5题:

    若有定义“int b[8],*p=b;”,则p+6表示( )。A.数组元素b[6]的值B.数组元素b[6]的地址SX

    若有定义“int b[8],*p=b;”,则p+6表示( )。

    A.数组元素b[6]的值

    B.数组元素b[6]的地址

    C.数组元素b[7]的地址

    D.数组元素b[o]的值加上6


    正确答案:B
    指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中p+6指的是将指针向后移动了6个存储单元,即指向b[6],存放的是b[6]的地址。

  • 第6题:

    若有定义“intb[8],*p=b;”,则p+6表示( )。A.数组元素b[6]的值B.数组元素b[6]的地址SX

    若有定义“intb[8],*p=b;”,则p+6表示( )。

    A.数组元素b[6]的值

    B.数组元素b[6]的地址

    C.数组元素b[7]的地址

    D.数组元素b[0]的值加上6


    正确答案:B
    指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中“P+6”指的是将指针向后移动了6个存储单元,即指向uE63,存放的是b[6]的地址。

  • 第7题:

    若有以下定义和语句:int a[10]={1,2,3,4,5,6,7,8,9,10},* p=a则不能表示a数组元素的表达式是 ( )

    A.* p

    B.a[10]

    C.* a

    D.a[p-a]


    正确答案:B

  • 第8题:

    若有如下定义: int s[3] 则下面表达式中不能代表数组元素s[1]的地址的是( )

    A.&s[1]

    B.&s[0]+1

    C.s+1

    D.s++


    正确答案:D

  • 第9题:

    有以下定义:“int t[3)[2]”,能正确标识t数组元素地址的表达式是( )。

    A.&t[3][2]

    B.t[3]

    C.t[1]

    D.t[2]


    正确答案:A
    解析:t[1],t[2]不能表示某行的首地址,t[3]写法错误。

  • 第10题:

    若有下列定义,则对a数组元素地址的正确引用是( )。int a[5],*p=a;A.p+5 B.*a+1

    若有下列定义,则对a数组元素地址的正确引用是( )。

    int a[5],*p=a;

    A.p+5

    B.*a+1

    C.&a+1

    D.&a[0]


    正确答案:D
    本题考查数组元素的地址的引用。A中,p+5引用的是a[5]的地址,而数组a只有5个元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用错误(注:数组元素下标从0开始);B中,*a+1指的是将数组a的第一个元素加1;选项C中,不存在这种引用方式;D中,&a[0]引用的是数组的首地址。

  • 第11题:

    若有定义:int a[10],*p=a;则表示数组元素a[3]的错误选项是()。

    • A、*(a+=3)
    • B、*(p+=3)
    • C、*(a+3)
    • D、p[3]

    正确答案:A

  • 第12题:

    单选题
    若有定义int a[2][3],*p=a;则以下不能表示数组元素a[1][2]的是()
    A

    *(a[1]+2)

    B

    *(p[1]+2)

    C

    p[5]

    D

    *(p+5)


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

  • 第13题:

    若有以下的说明和语句,则在执行for语句后,*(* pt+1)+2)表示的数组元素是 ( ) int t[3] [3],*pt[3],k; for(k=0;k<3;k+ +)pt[k]=&t[k] [0];

    A.t[2] [0]

    B.t[2] [2]

    C.t[1] [2]

    D.t[2] [1]


    正确答案:C

  • 第14题:

    若有以下定义和语句:int a[10]={1,2,3,4,5,6,7,8,9,10},*ia=a;则不能正确表示a数组元素的表达式是 ______。

    A.*ia

    B.a[10]

    C.*a

    D.a[ia-a]


    正确答案:B

  • 第15题:

    若有定义:int a[3][4],则正确引用数组 a 元素的是( ) 。

    A. a[2][4]

    B. a[3][3]

    C. a[0][0]

    D. a[3][4]


    正确答案:C

  • 第16题:

    若有以下定义和语句,则对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则指向了第二行的第二个数据元素,其他几个选项都不正确。

  • 第17题:

    若有以下的定义:‘int t[3][2];”,能正确表示t数组元素地址的表达式是( )。

    A.&t[3][2]

    B.t[3]

    C.t[l]

    D.t[2][2]


    正确答案:C
    数组的下标是从0开始的,A中越界,行下标和列下标都不能越界;B中,虽然是个地址,但是也同样越界了;选项C中表示的是第一个的首地址;选项D表示的为其元素的值,并不是地址。

  • 第18题:

    若有定义:

    则以下不能正确表示该数组元素的表达式是( )。

    A.A

    B.B

    C.C

    D.D


    正确答案:A
    本题考查的是通过指针引用二维数组元素。通过一维数组名或指向一维数组元素的指针来引用数组元素有两种写法:a[i]和*(a+i),它们是等价的。这是一种运算符之间的等价转换,就好像a一(b—c)等价于a-b+c一样。知道了这种转换,我们可以将之扩展到二维数组甚至任意维数组上来。因为口运算符的结合性是从左至右的,所以w[i珩]等价于(w[i][j],此时可以先将任意一个口运算符转换为指针形式为(·(w+i))[j]或*(w[i]+j),或者同时转换为*(*(W+i)+j)。上述几种形式都完全等价于w[il[j]。

  • 第19题:

    若有以下的定义:“intt[3][2];”,能正确表示t数组元素地址的表达式的是( )。A.

    B.

    C.

    D.

    A.A

    B.B

    C.C

    D.D


    正确答案:C
    数组的下标是从0开始的,选项A中越界,行下标和列下标都不能越界;选项B中,虽然是个地址,但是也同样越界了;选项C中表示的是第一个的首地址;选项D表示的是其元素的值,并不是地址。

  • 第20题:

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

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

    B.a[2][3]

    C.(*ptr+1)+2

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


    正确答案:D
    解析:指针变量ptr是指向长度为3的整型一维数组,当ptr指向二维数组a时,ptr每移动一个单位将指向数组的下一行,*(*(a+1)+2)表示数组元素a[1][2],*(*(ptr+1)+2)也可以。

  • 第21题:

    若有定义和语句: int a[10]={1,2,3,4,5,6,?,8,9,10},* p=a; 则不能表示a数组元素的表达式是 ( )

    A.* p

    B.a[10]

    C.* a

    D.a[p-a)


    正确答案:B

  • 第22题:

    若有定义int a[2][3],*p=a;则以下不能表示数组元素a[1][2]的是()

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

    正确答案:B

  • 第23题:

    定义int a[2][3];表示数组a中的元素个数是()个.


    正确答案:6

  • 第24题:

    单选题
    若有定义:int w[3][5];则以下不能正确表示该数组元素的表达式是(  )。
    A

    *(w+1)[4]

    B

    *(*w+3)

    C

    *(*(w+1))

    D

    *(&w[0][0]+1)


    正确答案: D
    解析:
    a数组元素可用五种表达式来引用:①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④(*(a+i))[j];⑤*(&a[0][0]+N*i+j)。A项,C语言中规定,方括号的优先级高于*,相当于*((w+1)[4]),不能表示数组元素。B项,*w是w[0]的地址,*w+3是w[0][3]的地址,表示数组元素w[0][3];C项,*(w+1)是w[1]的地址,表示数组元素w[1][0];D项,&w[0][0]是元素w[0][0]的地址,&w[0][0]+1是元素w[0][1]的地址,表示数组元素w[0][1]。答案选择A选项。