更多“若有以下定义:char s[20]="programming",*ps=s;则不能代表字符o的表达式是_______。A.ps+2B.s[2]C ”相关问题
  • 第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

  • 第2题:

    若有如下定义: char s[20],*ps=s; 则以下赋值语句正确的是()

    A.s=ps+s;

    B.ps=ps+20;

    C.s[5]=ps[9];

    D.ps=s[0];


    ps=ps+20;

  • 第3题:

    若有如下定义: char s[20],*ps=s; 则以下赋值语句正确的是()。

    A.s=ps+s;

    B.ps=ps+20;

    C.s[5]=ps[9];

    D.ps=s[0];


    ps=ps+20;

  • 第4题:

    若有以下定义和语句: 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为所选。

  • 第5题:

    【单选题】若有如下定义: char s[20],*ps=s; 则,以下赋值语句正确的是________。(第7章 指针程序设计)

    A.s=ps+s;

    B.ps=20;

    C.s[5]=ps[9];

    D.ps=s[0];


    分析:此题涉及的知识点是字符数组与指针的应用,对每个选项逐个分析如下:(1) 数组名代表数组的首地址,s=ps+s;对数组名赋值是不允许的。(2) ps=ps+20;将会使数组的使用超界,导致产生不能预料的错误。(3) s[5]=ps[9];等价于s[5]=s[9];,实现对数组元素s[5]的赋值。(4) ps=s[0];试图将一个整数值赋值给指针变量,这是不允许的。所以答案为选项 C。