关于一个C语言二维数组的问题
2012-04-24 11:55
288 查看
http://zhidao.baidu.com/question/415233232.html?quesup2&oldq=1
前几天去华为赛门铁克笔试,有一道题:int a[5][5]; int (*p)[3]; p = a; &p[4][2]-&a[4][2]=? —————————————— 您的回答是这样的: 首先:p=a;是非法的,类型不同 a的地址要给d得强制转换: p=(int(*)[3])a; 这样的话&p[4][2]-&a[4][2] =a+3*4+2-(a+5*4+2) = 14-22= -8 ################## 我想问问,这里是-8,是指的在二维数组中的“差距”(我姑且这样理解),可是“&p[4][2]”前面有个取地址符,是内存地址,因为int型数据占四个字节,那答案为什么不是-8*4呢?这一点疑惑很久了,请您指教,谢谢!
&[4][2]和&a[4][2]都是个int*,它们的差是以int的长度为单位的 -8的意思是它们之间有8个int的距离,例如有int a[3] 那么 &a[1]-&a[0]就是1,就是1个int长度,但是从绝对数值上是看是4个字节 这样就是-32了: (char*)&p[4][2]-(char*)&a[4][2]); //char是一个字节,那它们的差就是绝对字节长度了
相关文章推荐
- 一个关于C语言二维数组问题
- C语言中关于指针,二维数组等的问题,一个有趣的发现
- 关于一个给二维数组循环赋值问题的本渣研究出的解决办法[C#]
- 关于《c语言的一个小问题》的补充
- C语言中的一个关于基本类型的输出问题
- 关于C语言的一个小问题
- 关于C语言For循环的一个问题~!
- 关于二维数组地址问题的一个答复
- 关于C语言宏展开的一个问题
- c语言的一个关于%用法问题
- 【C语言】一个关于if的小问题
- 我用c语言写了一个关于商人过河的问题
- 一个关于C语言输入的问题
- c语言由一个小问题引发的关于gets和scanf的探究
- c语言 很蛋疼的一个关于买鸡问题
- 关于C语言的一个问题
- 一个关于C语言编程的问题
- C语言关于函数、数组的一个事例【关于选手评分的问题】
- 关于C语言中printf函数的一个问题
- 一个关于C语言输入的问题