更多“若有如下定义和语句: int s[4][5],(*p)[5]; p=S; 则指针对s数组中第三个元素的正确引用形式是()。 ”相关问题
  • 第1题:

    若有以下定义和语句: int s[4][5],(*ps)[5]; ps=s; 则对s数组元素的正确引用形式是

    A.ps+1

    B.*(ps+3)

    C.ps[0][2]

    D.*(ps+1)+3


    正确答案:C
    解析:本题首先定义了一个4行5列的数组s,又定义了一个指向由5个元素组成的一维数组的指针变量ps,通过赋值让ps指向了数组s的首地址。此时数组元素s[i][j]的地址为“*(ps+1)+j”,数组元素s[i][j]可表示为*(*(ps+1)+j)。选项B表示的是数组元素a[3][0]的地址;选项D表示的是数组元素s[1][3]的地址;选项A中“ps+1”为指向下一行(第二行)的地址;选项c中ps[0][2]无条件等价于“*(ps[0]+2)”又无条件等价于”(*(ps+0)+2)”,即是数组元素s[0][2]。所以,4个选项中C为所选。

  • 第2题:

    现有如下定义语句,表示数组元素s[i]的表达式不正确的是()。 int*p,s[20],i; p=s;

    A.*(s+i)

    B.*(p+i)

    C.*(s=s+i)

    D.*(p=p+i)


    C

  • 第3题:

    【单选题】若有语句:int s[3][3], (*p)[3]; p=s; 则对s数组元素的引用形式正确的是()。

    A.p+1

    B.*(p+1)

    C.p[1][2]

    D.*(p+1)+2


    C

  • 第4题:

    现有如下定义语句 int*p,s[20],i;   p=s; 表示数组元素s[i]的表达式不正确的是()

    A.*(s+i)

    B.*(p+i)

    C.*(s=s+i)

    D.*(p=p+i)


    C 解析:当p指向s数组的首地址时,表示数组元素s[i]的表达式应当有:①s[i],②,(s+i),③*(p+i),④p[i]四种形式。选项C)错误的原因是,数组的地址是不可变的,指针的地址是可以变的。

  • 第5题:

    5、现有如下定义语句 int*p,s[20],i;   p=s; 表示数组元素s[i]的表达式不正确的是()

    A.*(s+i)

    B.*(p+i)

    C.*(s=s+i)

    D.*(p=p+i)


    *(s=s+i)