计算机二级

设有以下定义和语句 int a[3] [2] ={1,2,3,4,5, 6,}, *p[3]; p[0]=a[1]; 则*(p[0]+1)所代表的数组元素是A.a[0][1]B.a[1][0]C.a[1][1]D.a[l][2]

题目

设有以下定义和语句 int a[3] [2] ={1,2,3,4,5, 6,}, *p[3]; p[0]=a[1]; 则*(p[0]+1)所代表的数组元素是

A.a[0][1]

B.a[1][0]

C.a[1][1]

D.a[l][2]

参考答案和解析
正确答案:C
解析:本题中首先定义了一个3行2列的数组a,一个长度为3的指针数组p,接着把地址a[1]赋给P[1]此时p[0]为a[1][0]的地址,p[0]+1为a[1][1]的地址,故*(p[0]+1)代表的元素为s[1][1]。所以,4个选项中选项C符合题意。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

【单选题】若有以下定义和语句,则对a数组元素的正确引用为()。 int a[2][3]={{1,2,3},{4,5,6}},(*p)[3]; p=a;

A.(p+1)[0]

B.*(*(p+2)+1)

C.*(p[1]+1)

D.p[1]+2


A

第2题:

有定义 int a[ ]={2,5,6,},*p=a; 则*(p+1)所代表的数组元素是()。

A.a[3]

B.a[2]

C.a[1]

D.a[0]


A

第3题:

有以下定义和语句 int a[3][2]={1,2,3,4,5,6,},*p[3]; p[0]=a[1]; 则*(p[0]+1)所代表的数组元素是

A.a[0][1]

B.a[1][0]

C.a[1][1]

D.a[1][2]


a[10]

第4题:

有以下程序段,则*(p[0]+1)所代表的数组元素是 #include <stdio.h> int main() { int a[3][2]={1,2,3,4,5,6,},*p[3]; p[0]=a[1]; ..... return 0; }

A.a[1][1]

B.a[0][1]

C.a[1][0]

D.a[1][2]


(1)两条指令都是合法指令第一条指令取得NAMES的偏移地址第二条MOV指令使用间接寻址方式将地址为(DS)x 10H+(BX)+5字节中的数据传送给AL结果(AL)=20。 (2)这条指令不正确因为NAMES的属性为字节而目的寄存器是AX所以类型不匹配。 (3)为合法指令。指令中将已定义的字节变量用伪操作PTR改变为字类型所以避免了类型不匹配的错误。操作结果(AX)=4D4FH(即M和I O的ASCII码)。 (4)前两条指令使用的是立即寻址方式第三条指令的源操作数字段使用的是相对基址变址方式但形成的数据段地址中的数据属性为字节而源操作数据寄存器为AX故出现类型不匹配的错误。若将AX改为AL这条指令就是合法指令。 (5)前两条指令是正确的后两条指令有错误。在汇编过程中OFFSEI、操作将得到变量的偏移值但对相对基址变址寻址方式形成的值在汇编指令时还是未知的。同样MOV BXOFF-SET:NAMES[SI]也是错误指令。第四条指令中AX不能作为基址寄存器使用。 (6)均为合法指令。第三条指令中的DI取得一个字节地址:(BX)+(SI)+OFFSETNAMES然后再按DI 中的偏移地址在数据段中将一个字节的内容传送给AL寄存器。操作结果(AL)=30。 两条指令都是合法指令,第一条指令取得NAMES的偏移地址,第二条MOV指令使用间接寻址方式,将地址为(DS)x10H+(BX)+5字节中的数据传送给AL,结果(AL)=20。(2)这条指令不正确,因为NAMES的属性为字节,而目的寄存器是AX,所以类型不匹配。(3)为合法指令。指令中将已定义的字节变量用伪操作PTR改变为字类型,所以避免了类型不匹配的错误。操作结果(AX)=4D4FH(即M和IO的ASCII码)。(4)前两条指令使用的是立即寻址方式,第三条指令的源操作数字段使用的是相对基址变址方式,但形成的数据段地址中的数据属性为字节,而源操作数据寄存器为AX,故出现类型不匹配的错误。若将AX改为AL,这条指令就是合法指令。(5)前两条指令是正确的,后两条指令有错误。在汇编过程中,OFFSEI、操作将得到变量的偏移值,但对相对基址变址寻址方式形成的值在汇编指令时还是未知的。同样MOVBX,OFF-SET:NAMES[SI]也是错误指令。第四条指令中,AX不能作为基址寄存器使用。(6)均为合法指令。第三条指令中的DI取得一个字节地址:(BX)+(SI)+OFFSETNAMES,然后再按DI中的偏移地址,在数据段中将一个字节的内容传送给AL寄存器。操作结果(AL)=30。

第5题:

设有以下定义和语句 int a[3][2]={1,2,3,4,5),*p[3]; p[0]=a[1]; 则*(p[0]+1)所代表的数组元素是______。

A.a[0][1]

B.a[1][0]

C.a[1][1]

D.a[1][2]


正确答案:C

第6题:

设有以下定义和语句: int a[3] [2]={1,2,3,4,5,6}, * p[3]; p[0] =a[1]; 则.(P[0]+1)所代表的数组元素是( )。

A.a[0][1]

B.a[1][0]

C.s[1][1]

D.a[1][2]


正确答案:C
解析:*p[3]是指针数组,它由3个指向整型数据的指针元素组成,p[0]=a[1]是将a数组第一行的首地址赋给第0个指针元素,p[0]+1表示a[1]+1即a[1][1]的地址,所以*(p[0]+1)表示a[1][1]。

第7题:

有以下定义和语句

int a[3][2]={1,2,3,4,5,6,},*p[3];

p[0]=a[1];

则*p[0]+1)所代表的数组元素是

A.a[0][1]

B.a[1][0]

C.a[1][1]

D.a[1][2]


正确答案:C
解析:本题中a为三维数组,其中a[0],a[1],a[2]分别代表它的三维(的首指针),p为一个一维指针数组,含有3个元素,每两行代码把数组的第二维的首指针赋值给指针数组的第一个值,所 以,*  (p[0]  +1)即取p[0]所指数组的第二个值,即为数组a的第二维的第二个值,即为a[1] [1]。

第8题:

设有以下定义和语句: int a[3][2]={1,2,3,4,5,6,), *p[3]; p[0]=a[1]; 则*(p[0]+1)所代表的数组元素是( )。

A.a[0][1]

B.a[1][0]

C.a[1][1]

D.a[1][2]


正确答案:C
解析:本题中首先定义了一个3行2列的数组a,一个长度为3的指针数组p,接着把地址a[1]赋给p[0],此时p[0]为a[1][0]的地址,p[0]+1为a[1][1]的地址,故*(p[0]+1代表的元素为a[1][1]。所以,4个选项中选项C符合题意。

第9题:

设有以下定义和语句 int a[3][2]={1,2,3,4,5,6},*p[3]; p[0]=a[1]; 则*(p[0]+1)所代表的数组元素是

A.a[0][1]

B.a[1][0]

C.a[1][1]

D.a[1][2]


正确答案:C
解析:本题中首先定义了一个3行2列的数组a,一个长度为3的指针数组 p,接着把地址a[1]赋给p[0]此时p[0]为a[1][0]的地址,p[0]+1为a[1][1]的地址,故*(P[0]+1)代表的元素为a[1][1]。