假设有以下C语言定义语句,表达式(31)不能正确引用值为7的数组元素。 int y[4][4]={1,2,3,4,5,6,7,8,9,10},*py1=y[1],(*py2)[4]=y;A.py1[2]B.*(y+1)+2C.*(y[1]+2)D.py2[1][2]

题目

假设有以下C语言定义语句,表达式(31)不能正确引用值为7的数组元素。 int y[4][4]={1,2,3,4,5,6,7,8,9,10},*py1=y[1],(*py2)[4]=y;

A.py1[2]

B.*(y+1)+2

C.*(y[1]+2)

D.py2[1][2]


相似考题
参考答案和解析
正确答案:B
解析:在C语言中,二维数组名y及y+l均表示行指针,在它们前面加一个*就是*y和*(y+1),它们就成为列指针。而一维数组名y[1]则为列指针,y[1]+1中的“1”代表一个元素所占的字节数。列指针前面加上&,则变为行指针。例如,&(*(y+1))、&y[1]。对于选项A的py1[2],无条件等价于*(py1+2)=(y[1]+2)=*(*(y+1)+2)。式中py1、y[1]为列指针,而y、py2为行指针。选项B的*(y+1)+2,是列指针的表示形式,无法得到所指单元中的值,即不能正确引用值为7的数组元素。其中,y+l为行指针,*(y+1)为列指针,*(y+1)+2则为指向1行2列的列指针。选项C的,(y[1]+2)无条件等价于*(*(y+1)+2),指向第2行的第3个元素。相当于列指针“+2”,在横向上的移动。选项D的py2[1][2]无条件等价于*(py2[1]+2=*(*(py2+1)+2)。py2为行指针,py2[1]为列指针,py2[1][2]则为列指针指向的1行2列的元素。
更多“假设有以下C语言定义语句,表达式(31)不能正确引用值为7的数组元素。 int y[4][4]={1,2,3,4,5,6 ”相关问题
  • 第1题:

    若有定义和语句: 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

  • 第2题:

    若有以下定义和语句, int a[10]={1,2,3,4,5,6,7,8,9},*p; p=&a[1]; 则通过指针p对值为8的数组元素的引用表达式是 。


    A typedef的主要功能是为存在的类型命名,后面的代码中可以利用该新定义的类型名定义变量,题目中定义了整型指针类型T,而后利用T定义了整型指针数组a,含有10个元素,选项A中定义了整型指针数组a,选项B定义了一个指向一维数组的指针a,选项C定义指针变量,而选项D为定义整型数组最常用的形式,数组a中可以存放10个数据元素。

  • 第3题:

    7、若有以下定义和语句, int a[10]={1,2,3,4,5,6,7,8,9},*p; p=&a[1]; 则通过指针p对值为8的数组元素的引用表达式是 。


    a[10]

  • 第4题:

    定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为()


    25

  • 第5题:

    定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为()。


    25