itgle.com
更多“若有下列定义和语句,则对a数组元素的非法引用是()。Int a[2][3],(*pt)[3];pt=a; A. pt[0][0]B. *(pt+1)[2]C. *(pt[1]+2)D. *(a[0]+2”相关问题
  • 第1题:

    若有定义int(*pt)[3];,则下列说法不正确的是( )。

    A.int(*pt)[3]是一个数组指针

    B.指针pt指向一个有3个整型变量的数组

    C.定义了一个名为*pt、具有三个元素的整型数组

    D.定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组


    正确答案:D
    解析:首先,pt跟*结合,所以是一个指针,所指向的对象是含有3个元素的数组。所定义的指针没加const,所以是个指针变量,还可以指向类似对象的其他元素,也就是说还可以指向其他含有3个元素的数组。

  • 第2题:

    若有说明:int a[3][4];则对a数组元素的非法引用是

    A.a[0][2*1]

    B.a[1][3]

    C.a[4-2][0]

    D.a[0][4]


    正确答案:D
    解析:在数组这部分的知识里面,数组下标越界是一个比较容易忽略的问题,其下标是从0开始,至n-1为止,因此选项D是正确答案。

  • 第3题:

    若有下列定义 intx[10],*pt=x; 则对x数组元素的正确引用是( )。

    A.*&*[10]

    B.*(x+3)

    C.*(pt+10)

    D.pt+3


    正确答案:B
    B。【解析】在C语言中,数组名是一个存放地址值的指针变量名,其地址值是数组第。一个元素的地址,也是数组所占一串连续存储单元的起始地址。因为数组的下标是从0开始的,所以选项B中,X+3表示数组x[10]中的第四个元素的地址,在其前面加上星号,表示是数组x[10]中的第四个元素中的值。所以正确答案为选项B。选项A、C的地址范围超出数组x[10]中元素的地址范围,选项D表示的是地址值。

  • 第4题:

    若有以下定义和语句: iht w[2][3],(* pw)[3];pw=w; 则对w数组元素的非法引用是 ( )

    A.* (w[0]+2)

    B.* (pw + 1)[2]

    C.pw[0][0]

    D.* (pw[1]+2)


    正确答案:A

  • 第5题:

    若有说明int a[3][4];,则a数组元素的非法引用是

    A.a[0][2*1]

    B.a[1][3]

    C.a[4—2][0]

    D.a[0][4]


    正确答案:D
    解析:本题定义a为3行×4列的数组,它可用的行下标最大为2,列下标最大为3。注意:a[0][4]超过了数组的范围。注意:数组的下标是从0开始的。

  • 第6题:

    若有以下定义和语句,则下列选项中对w数组元素非法引用的是______。 int w[2] [3], (*pw) [3]; pw=w;

    A.w[0]+2

    B.*(pw+1)[2]

    C.pw[0][0]

    D.*(pw[1]+2)


    正确答案:B

  • 第7题:

    若有以下定义和语句,则对w数组元素非法引用的是______。 int w[2][3],(*pw)[3];pw=w;

    A.w[0]+2

    B.*(pw+1)[2]

    C.pw[0][0]

    D.*(pw[1]+2)


    正确答案:B
    解析:选项A表示元素w[0][2],选项C表示元素w[0][0],选项D表示元素w[1][2],而选项B中pw+1表示第2行元素的地址,(pw+1)[2]相当于(pw+1)+2,表示第4行元素的地址,显然超出该二维数组的范围。

  • 第8题:

    有以下类定义 class Point{ public: Point{int x = 0, int y=0) {_x = x; _y = y;} void Move int xoff, int yoff) {_x +=xoff;_y+=yoff;} void Print() const {cout<<'('<<_x<<','<<_y<<')' << end1;} private: int_x,_y; }; 下列语句中会发生编译错误的是

    A.Point pt;pt.Print();

    B.const Point pt;pt.Print();

    C.Point pt;pt.Move(1, 2);

    D.const Point pt;pt.Move(1, 2)


    正确答案:D
    解析:本题考核常对象、常数据成员与常成员函数。如果将二个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其他的成员函数,D选项中对象pt为常对象,而成员函数Move()不是常成员函数,所以这样调用会发生编译错误。

  • 第9题:

    用指针作函数参数,编程序求一维数组中的最大和最小的元素值。

    #define N 10

    main()

    { void maxmin(int arr[],int *pt1,int *pt2,int n);

    int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

    p1=&a; p2=&b;

    maxmin(array,p1,p2,N);

    printf("max=%d,min=%d",a,b);

    }

    void maxmin(int arr[],int *pt1,int *pt2,int n)

    { int i;

    *pt1=*pt2=arr[0];

    for(i=1;i<N;I++)

    { if(arr[i]>*pt1) (9) ;

    if(arr[i]<*pt2) (10) ;

    }

    }


    正确答案:
    4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]

  • 第10题:

    若有说明int a[3][4];,则a数组元素的非法引用是( )

    A.a[0][2*1]
    B.a[1][3]
    C.a[4-2][0]
    D.a[0][4]

    答案:D
    解析:

  • 第11题:

    定义和语句是:int w[2][3],(* pw)[3];pw=w;则对w数组元素的非法引用是()

    • A、* (w[O]+2)
    • B、* pw[2]
    • C、pw[0][O]
    • D、* (pw[1]+2)

    正确答案:B

  • 第12题:

    单选题
    若有以下定义:int x[10],*pt=x;则对x数组元素的正确引用是(  )。
    A

    *&x[10]

    B

    *(x+3)

    C

    *(pt+10)

    D

    pt+3


    正确答案: A
    解析:
    数组的下标是从0开始的,故x[10]实际上具体为x[0],x[1],…,x[9],而若使用x[10]就会溢出、编译出错,所以AC两项错误;D项,pt+3指向地址,并未引用到元素;B项的表达正确,代表x[3]中的元素,答案选择B选项。

  • 第13题:

    若有以下定义和语句,则对w数组元素的非法引用是 ______。 int w[2][4],(*pw)[4];pw=w;

    A.*(w[0]+2)

    B.*pw[2]

    C.pv[0][0]

    D.*(pw[1]+2)


    正确答案:B

  • 第14题:

    若有以下定义 intx[10],*pt=x; 则对x数组元素的正确引用是______。

    A.*&x[10]

    B.*(x+3)

    C.*(pt+10)

    D.pt+3


    正确答案:B
    解析:本题主要考查的是数组的引用,在C语言中,—个数组不能整体引用。在选项A中,*&X[10]属于地址越界;选项C中,*(pt+10)也是地址越界。选项D中,pt+3是将指针P,后移三个元素,指向x3),并没有对数据元素进行引用。在C语言中,可以用对数组名加—个整数的方法,来依次表示该数组中不同元素的地址,因此,选项B是正确的。

  • 第15题:

    若有说明 int a[3][4];,则a数组元素的非法引用是

    A.a[0][2*1)

    B.a[1][3]

    C.a[4-2][O]

    D.a[0][4)


    正确答案:D
    解析:本题定义a为3行x4列的数组,它可用的行下标最大为2,列下标最大为3。注意:a[0)[4]超过了数组的范围。注意:数组的下标是从0开始的。

  • 第16题:

    若有以下定义:

    int x[10],* pt=x;

    则对x数组元素的正确引用是( )。

    A.pt+3

    B.}&x[10]

    C.*(pt+10)

    D.*(x+3)


    正确答案:D
    没有A选项的引用形式。+与&放在一起作用抵消,所以B选项错误,最大只能引用到X[9]。+(pt+i)表示引用指针pt所指元素后的第i个元素,所以c选项错误,最大只能为+(pt+9)。因此D选项正确。

  • 第17题:

    若有以下的说明和语句,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是( )。


    正确答案:C
    从for循环可知,pt是指向行的首地址的指针变量,因此由指针的表示方法可知:*(*(pt+1)+2)=pt[1][2]=t[1][2]。

  • 第18题:

    有以下类定义: class Point { public: Point(int x=0,int y=0){_x=x; _y=y;} void Move(int x Off, int y Off) {_x+=x Off; _y+=y Off; } void Print() const { cout <<'(' << _x << ',' << _y << ')'<< end 1;} private: int _x,_y; }下列语句中会发生编译错误的是______。

    A.Point pt; pr. Print();

    B.const Point pt; pt. Print();

    C.Point pt; pt. Move(1,2);

    D.const Point pt; pt. Move(1,2);


    正确答案:D
    解析:const修饰符改变值出错。

  • 第19题:

    若有定义和语句: int w[2][3],(* pw)[3];pw=w; 则对w数组元素的非法引用是 ( )

    A.* (w [0] +2)

    B.* (pw+1)[2]

    C.pw[0][0]

    D.* (pw [1]+2)


    正确答案:B

  • 第20题:

    若有说明:int a[3][4];则对a数组元素的非法引用是 ( )。

    A.a[0][2*1]

    B.a[1][3]

    C.a[4-2][0]

    D.a[O][4]


    正确答案:D

    在数组这部分的知识里面,数组下标越界是一个比较容易忽略的问题,其下标是从O开始,至n1为止,因此选项D是正确答案。 

  • 第21题:

    若有定义int(*pt)[3];,则下列说法不正确的是( )。

    A)int(*pt)[3]是一个数组指针

    B)指针pt指向一个有3个整型变量的数组

    C)定义了一一个名为*pt、具有三个元素的整型数组

    D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组


    正确答案:D

  • 第22题:

    若有说明:int a[3][4]; 则对a数组元素的非法引用的是()。

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

    正确答案:B

  • 第23题:

    单选题
    定义和语句是:int w[2][3],(* pw)[3];pw=w;则对w数组元素的非法引用是()
    A

    * (w[O]+2)

    B

    * pw[2]

    C

    pw[0][O]

    D

    * (pw[1]+2)


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