回复:(mebol)[讨论] 数组
-- 作者:mebol -- [讨论] 数组 若有以下定义和语句: static int w[2][3],(*pw)[3]; pw=w; 则对w数组元素的非法引用是: A:*(pw[0]+2) B: *(pw+1)[2] C: pw[0][0] D: *(pw[1]+2) 请大家写详细点为什么是?为什么不是?谢谢 分析: w是二维数组,pw是行指针。 A:pw[0]相当于w[0]->*(a[0]+2)我们知道a[0]代表w第一行的首地址,所以a[0]+2,就是w第一行第三个元素的地址,再*(a[0]+2),就是引用元素[0][2]. B: *(pw+1)[2]->*(pw[0]+1)[2]这里*(pw[0]+1)按上面分析就已经是引用w[0][1]了,所以再加个[2]就多余了。 C:pw[0][0]->a[0][0]这应该没问题吧 D:*(pw[1]+2)分析同A相当于第二行第三个元素,即w[1][2]. |
行至水穷处 坐看去起时
C语言QQ群1:51871776 群2:26313099 群3:47145282