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

关于二维数组 内存基本有关问题

2012-08-14 
关于二维数组 内存基本问题#includestdio.hvoid main(){int *pNULL,iint a[3][4]{1,2,3,4,5,6,7,8,9,

关于二维数组 内存基本问题
#include<stdio.h>
void main()
{
int *p=NULL,i;
int a[3][4]={
1,2,3,4,
5,6,7,8,
9,10,11,12};



for (i=0;i<=2;i++)
{

printf("%#X\n",a);
printf("%#X\n",a+i); 求这里为什么 a每次加1 它的地址多是以10为单位进的 
  比喻 0X12FF54 加1后变成 0X12FF64它内部是怎么计算的求
   
printf("%d\n",a[i][0]);
//printf("%d\n",a[1][0]);
//printf("%#X\n",&a[1][0]);
printf("\n");
}
*/
}


[解决办法]
a+1 就是4个int, 就是4*4 16个字节
[解决办法]
首先,“它的地址多是以10为单位进的”这句话有问题,应该是以16为单位进的。如楼上所说,a+1,就将a移动了16个字节,这就相当于在二维数组中,将a的指向移动到了数组的下一行。(*a)+1是将a往右移动一列,而a+1是向下移动一行。不知道我有没有说清楚。
[解决办法]

探讨

0X12FF4C
0X12FF5C 10 这里不懂啊

[解决办法]
探讨
首先,“它的地址多是以10为单位进的”这句话有问题,应该是以16为单位进的。如楼上所说,a+1,就将a移动了16个字节,这就相当于在二维数组中,将a的指向移动到了数组的下一行。(*a)+1是将a往右移动一列,而a+1是向下移动一行。不知道我有没有说清楚。

[解决办法]
十进制的16就等16进制的10

热点排行