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

关于数组地址的计算,该如何解决

2012-02-08 
关于数组地址的计算inta[4],nint*paa,*pb&a[3]npb-pa+1cout n pb pa endl这个例子

关于数组地址的计算
int   a[4],n;
int   *pa=a,*pb=&a[3];
n=pb-pa+1;
cout < <n < < < <pb < <pa < <endl;

这个例子n得出的是数组的个数
可pa   pb   是数组的地址啊   编译器是怎么算出来的呢

小弟初学   请教大家

[解决办法]
编译器不是算出来的,因为在pa,pd上本来存储的就是存放*pa,*pd数值的地址,所以你只是读取了pa,pd里面的数值而已,如果你想读这个地址里存放的值,必须加上*号,才能保证读到数值。
[解决办法]
pa,pb里面存储的是“地址”
0xeeff1234等等
地址也可以进行数值运算啊,所以可以把它认为是:
(a+0)-(a+3) = 3
a是数组的开始地址也是&a[0]
[解决办法]
还可以看看:
http://bbs.chinaunix.net/viewthread.php?tid=813131&extra=page%3D2%26filter%3Ddigest
[解决办法]
这个程序是死的
最后一个元素的地址与第一元素地址相减+1就得数组元素的个数,而地址与地址也是可以运算的
就想做这样的数学题:1-10有多少个数? 个数N=10(末)-1(首)+1
[解决办法]
LZ应该看看指针的+ -法的计算,比如一个int指针p,p++指针会向后移动4个字节,也就是一个int。

int a[3];
int *p1,*p2;
p1 = a[0];p2 = a[1];
这时p2和p1+1是相等的
[解决办法]
pa pb这两个变量存储的东西就是 "地址 ",可加减,
数组的地址是连续的,所以可以算出来
[解决办法]
地址值相减再除以sizeof(a[0])

热点排行