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

读内存地址有关问题

2012-04-22 
读内存地址问题struct test_st{...unsigned int* data...}*test写法1:usigned int *value1 (usigned i

读内存地址问题
struct test_st{
...
unsigned int* data;
... 
}*test;


写法1:
usigned int *value1 = (usigned int)(test->data+100);
usigned int value2 = *value1;

写法2:
usigned int *value1 = (usigned int)test->data+100;
usigned int value2 = *value1;

为什么写法1和写法2 value2会得到两个不同的结果

[解决办法]
第一个,是指针加减。
type *p;
(unsigned long)(p+n)==((unsigned long)(p)+n*sizeof(type))
第二个,是普通算术加减
[解决办法]
指针+-规则:
Type *p;
int n;
p+n的数值(unsigned long)(p+n)
等同于 ((unsigned long)(p) + n * sizeof(Type));
例如:
当Type是int的时候,p=0;设n=1.
那么 p+n的数值是 4.
等同于 0+ 1*sizeof(int)=4.
[解决办法]
我到底发帖成功没。。。
无语了。。。
[解决办法]
指针加法,加的实际数值是100*sizeof(int)。也就是说要乘上它所指类型的尺寸。

后面那个就只是普通的算术加法。
[解决办法]
楼上几位都解释的很清楚了啊

热点排行