&p[4][2]-&a[4][2]到底等于多少?
2017-09-16 21:29
309 查看
void test(){int a[5][5] = {0};int(*p)[4];p = a;printf("%p ,%p\n",&a[4][2],&p[4][2]);printf("%p ,%d\n",&p[4][2]-&a[4][2],&p[4][2]-&a[4][2]);}int main(){test();return 0;}参考《c语言深度剖析》,对这个程序进行分析:经过测试,结果是这样,a作为二维数组,&a[4][2]相当于 &a[0][0]+4*sizeof(int)+2*sizeof(int)。p是一个指向包含4个int型元素的数组的指针,p+1相当于p向后移动4个int类型的元素的数组,就是4*sizeof(int),所以p[4][2]相当于:&a[0][0]+4*4sizeof(int)+2*sizeof(int)。这个问题是画图来解决的:
相关文章推荐
- ★人眼到底等于多少像素 ?
- i&(-i)等于多少?
- 【科普】人眼到底等于多少像素
- 你知道System.out.println((null+"").length()); 等于多少吗?
- 1M到底等于多少
- 【科普】人眼到底等于多少像素
- ★人眼到底等于多少像素 ?
- ★人眼到底等于多少像素 ?
- ★人眼到底等于多少像素 ?
- 【科普】人眼到底等于多少像素
- ★人眼到底等于多少像素 ?
- ★人眼到底等于多少像素 ?
- 学习Android到底能赚多少钱?
- mysql VARCHAR的最大长度到底是多少
- 分享 MySQL 数据库 varchar 到底可以存多少个汉字,多少个英文呢?我们来搞搞清楚
- 梦想到底值多少钱?
- 在你的solution里面到底有多少projects? 小型软件公司如何更快的建立自己的Framework.
- 【专题】关于敏捷测试,我们到底知道多少?
- 没个百来万就想自建技术团队?亲身经历告诉你,一个APP从无到有的开发到底要花多少钱!
- 编写一个程序,读入个数不确定的(<=100个)考试分数,并且判断有多少个分数是大于或等于平均分,多少个分数是低于平均分的。输入一个负数表示输入的结束。假设成绩的最高分为10分。