作业帮 > 综合 > 作业

int a[2][3]={0,1,2,3},*p; p=&a[2]; *--p

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 06:48:34
int a[2][3]={0,1,2,3},*p; p=&a[2]; *--p
*--p的值为什么是0
什么也不是!就p=&a[2];这一句就不会过编译,因为a是二维数组,所以&a[2]是int (*)[3]型的,而p是int *型的,等号两边类型不配!如果是p=a[2];的话,那*--p就是0了.因为:编译器把int a[2][3]={0,1,2,3}解释为int a[2][3]={{0,1,2},{3,0,0}},a[2]已经越界指向最后一个0后面了,但它由p=a[2];传递给p后,经过了--p,这样p就指向最后一个0了,再由*取出值来自然是0.
再问: 确实 ,如果改下题目的话,应该怎么解释呢,谢谢了 是习题书上的题目
再答: 如果改成p=a[2];的话,那*--p就是0了。因为:编译器把int a[2][3]={0,1,2,3}解释为int a[2][3]={{0,1,2},{3,0,0}},a[2]已经越界指向最后一个0后面了,但它由p=a[2];传递给p后,经过了--p,这样p就指向最后一个0了,再由*取出值来自然是0。
再问: http://zhidao.baidu.com/question/528403696.html 能不能解释下这一题
再答: 后面少了个”)“。 *p1[3]是3元素int型指针数组,经for(i=0;i