itgle.com
更多“ 若有以下的说明和语句,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是( )。 ”相关问题
  • 第1题:

    若有以下的说明和语句,则在执行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
    解析:本题考查通过指针引用数组元素。*(*(pt+1)+2)等价于*(pt[1]+2),pt[1]+2是t[1][2]的地址,故*(pt[1]+2)是t[1][2]的值。

  • 第2题:

    若有以下说明和语句: int c[4][5],(*p)[5]; p=c; 能够正确引用c数组元素的是( )。

    A.p+l

    B.*(p+3)

    C.*(p+1)+3

    D.*(p[0]+2)


    正确答案:D
    解析:本题中定义了一个二维数组c和一个指针数组p,并初始化让p指向c。显然此时p中的各元素为地址,选项A中p+1,此时其中的1代表的长度是整个二维数组c的长度,故p+l将让p指向c数组后面的元素,不能引用c数组中的成员,故选项A错误;同理选项B和选项C都不正确,选项D中p[0]指的是指针数组中的第一个元素的地址即c的首地址,此时的1的长度代表的是数组C中一行的长度,故p[0]+2代表的是第3行的首地址,而*(p[0]+2)将代表第3行的第一个元素的地址,所以,4个选项中选项D符合题意。

  • 第3题:

    【填空题】若有以下定义和语句: int a[10], *p; p=a; 则在程序中,引用数组元素a[m]的四种形式是:______(1)_____、____(2)____、_____(3)_____和a[m]。(假设m 已正确说明并赋值)


    B 解析:选项B越界,因为该数组元素只有a[0]~a[9]。

  • 第4题:

    若有以下的说明和语句,则在执行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

  • 第5题:

    若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+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[l][2]

    D.t[2][l]


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