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

疑惑!该怎么解决

2012-02-13 
疑惑!!!!!inta[3]{1,2,3}printf( %d ,&a[2]-&a[1])printf( \n%d ,&a[2])printf( \n%d ,&a[1])

疑惑!!!!!
int   a[3]={1,2,3};
printf( "%d ",&a[2]-&a[1]);
printf( "\n%d ",&a[2]);
printf( "\n%d ",&a[1]);
这里要问的是,&a[2]-&a[1]怎么是等于1,

printf( "\n%d ",&a[2]);
printf( "\n%d ",&a[1]);
打印结果却差4个字节!
这里不是很理解,请大虾解释一下,感谢!

[解决办法]
1、&a[1]+1表示元素a[1]后面第1个元素的地址,&a[1]+n表示元素a[1]后面第n个元素的地址。&a[i]-&a[j]表示这两个地址之间相隔的元素个数,因此&a[2]-&a[1]=1
2、分别打印a[1]和a[2]的地址,发现相差4个字节,是因为给每个元素分配4个字节的空间

热点排行