首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于2维数组有关问题

2012-04-16 
关于2维数组问题#include stdio.hint main(void){int torf[2][2]{{12},{14,16}}int * ptrptrtorf[0]

关于2维数组问题
#include <stdio.h>
int main(void)
{
int torf[2][2]={{12},{14,16}};
int * ptr;
ptr=torf[0];
printf("%d %d\n",*ptr,*(ptr+2));

return 0;
}


输出结果为 12,14  
希望高手帮小弟解答一下原因。谢谢

[解决办法]
int torf[2][2]={{12},{14,16}}; 
相当于:
int torf[4]={12,0,14,16};
我想现在你应该知道为啥是12,14了
[解决办法]
*ptr 相当于 ptr[0].因为 ptr=tof[0],那么 *ptr相当于 torf[0][0],所以是12.
*(ptr+2)相当于 ptr[2],因为 ptr=tof[0],那么 *(ptr+2)相当于 torf[0][2],
因为二维数组是连续存储的。 而 最大长度是 2.
所以溢出到下一个元素的地方,即 torf[1][0],即 14
[解决办法]

C/C++ code
int * ptr;ptr=torf[0];//执行这个以后,ptr指向的是torf[0][0] (ptr+1)指向的是torf[0][1] (ptr+2)指向的是torf[1][0] 

热点排行