
void main( ){ int a[2][3]={{1, 2, 3},{4, 5, 6}};
(16)有以下程序voidmain(){inta[2][3]={{1,2,3},{4,5,6}};intm,(*p)[3]=a;这里不是很懂。m=(*(*p))*(*(*...
(16)有以下程序
void main( )
{ int a[2][3]={{1, 2, 3},{4, 5, 6}};
int m,(*p)[3]=a;这里不是很懂。
m=(*(*p)) *(*(*(p+1)+2));这里也不懂。。
printf("%d\n",m);
}
执行后输出的结果是( )
A)3 B) 4 C) 1 D) 6 展开
void main( )
{ int a[2][3]={{1, 2, 3},{4, 5, 6}};
int m,(*p)[3]=a;这里不是很懂。
m=(*(*p)) *(*(*(p+1)+2));这里也不懂。。
printf("%d\n",m);
}
执行后输出的结果是( )
A)3 B) 4 C) 1 D) 6 展开
展开全部
D) 6
好吧其实是运行结果。。。
(*p)[3] 其实就跟a[2][3]差不多,不同的是a[2][3]里{1, 2, 3}的地址(其实就是1的地址)是存在a[0]里而(*p)[3]里是存在*p这个地址里,*(p+1)对应的是a[1]这样子。。。
所以(*p)[3]=a其实就是把二维数组赋予(*p)[3],方便以后用p乱指。。。
m=(*(*p)) *(*(*(p+1)+2));
这个要注意的是中间的*是乘号。。。
前面的(*(*p))就是取*p的值就是{1, 2, 3}里的1啊,而*(p+1)就是a[1]里{4, 5, 6}中4的地址,再+2就是6的地址了(一维数组地址连续),然后取值就是6了
所以m=1*6=6,选D
好吧其实是运行结果。。。
(*p)[3] 其实就跟a[2][3]差不多,不同的是a[2][3]里{1, 2, 3}的地址(其实就是1的地址)是存在a[0]里而(*p)[3]里是存在*p这个地址里,*(p+1)对应的是a[1]这样子。。。
所以(*p)[3]=a其实就是把二维数组赋予(*p)[3],方便以后用p乱指。。。
m=(*(*p)) *(*(*(p+1)+2));
这个要注意的是中间的*是乘号。。。
前面的(*(*p))就是取*p的值就是{1, 2, 3}里的1啊,而*(p+1)就是a[1]里{4, 5, 6}中4的地址,再+2就是6的地址了(一维数组地址连续),然后取值就是6了
所以m=1*6=6,选D
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询