若有定义:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a; ,( )对数组a元素的引用是正确的。
若有定义:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a;,()对数组a元素的引用是正确的。为什么选择A能解释下四...
若有定义:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a; ,( )对数组a元素的引用是正确的。为什么选择A能解释下四个选项吗
展开
3个回答
展开全部
int (*p)[4];表明p是行指针,即p指向二维数组中的一行。
p=a;这一句表示p指向a[0],也就是指向a数组第0行的第0个元素(a[0][0])的地址。
p[2]表示p指向a数组的第二行,即指向a[2]行,也就指向a[2][0]的地址。
p[2]+3表示行指针指向a数组的第二行(从第0行开始),(从0开始)第3个元素,也就是a[2][3],*(p[2]+3)表示第2行,第3个元素的值。
p+4表示第四行(从0行开始),因为a数组没有第四行,所以是错的。
p[4]表示第四行(从0行开始),原因同上。
*p表示a数组第0行,第0列地址,**p表示a[0][0]的值,值不会再包含元素,所以(**p)[2]是错的。
p=a;这一句表示p指向a[0],也就是指向a数组第0行的第0个元素(a[0][0])的地址。
p[2]表示p指向a数组的第二行,即指向a[2]行,也就指向a[2][0]的地址。
p[2]+3表示行指针指向a数组的第二行(从第0行开始),(从0开始)第3个元素,也就是a[2][3],*(p[2]+3)表示第2行,第3个元素的值。
p+4表示第四行(从0行开始),因为a数组没有第四行,所以是错的。
p[4]表示第四行(从0行开始),原因同上。
*p表示a数组第0行,第0列地址,**p表示a[0][0]的值,值不会再包含元素,所以(**p)[2]是错的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询