第2个回答 2008-07-30
第一个答案错,选c,如楼上所说,*(p+4)指向a[5]越界。
第二个正确,(*p)[3]表示p是一个一个指向含有三个元素的数组的指针,三个元素为a[2][3]的矩阵的三个列,
a[0][0],a[0][1],a[0][2]
a[1][0],a[1][1],a[1][2]
p=a,表示p指向a数组的首地址,答案里A,B不能表示元素内容,只是个地址,c表示第1列的第3行,明显越界了,所以是D
第3个回答 2008-07-30
第一题:
A、C语言中数组下标从0开始,最多也只能到a[4],所以A错。
B、C语言中数组名是指向第一个元素的指针,所以a+2是指向第3个元素。
C、p是指针,是指向第二个元素,所以*(p-1)是引用第一个元素。
D、p+4超出数组上界,错误
所以应该选择 C
第二题:
分析可以得到p是指向数组的同时也是指向第一行第一个元素的指针,数组应该如下:
* * *
* * *
A、B中不存在取元素操作符肯定错,必须有*操作符。
C、一般来说*(*(p+i)+j)指的是a[i][j],则C为a[2][1],出界了哈,错误
D、p[1]指向第二行第一个元素,所以D是指向第二行第二个元素。