关于C中指针的一些疑问
(2012-06-07 03:38:15)
标签:
杂谈
关于C中指针的一些疑问先看代码如下:
#include
typedef struct
{
int a;
int c;
}stack;
int main(int argc, char *argv[])
{
printf("Hello, world\n");
stack ss;
stack *b;
b=&ss;
b->a=1;
b->c=2;
printf("%x\n",b);
printf("%x\n",&ss);
printf("%x\n",&(b->a));
printf("%x\n",&(b->c));
printf("%x\n",(b-sizeof(stack)));
b--;
printf("%x\n",b);
printf("%x\n",&ss);
printf("%x\n",(&ss-sizeof(stack)));
return 0;
}
实验结果:
Hello, world
bfd85b08
bfd85b08
bfd85b08
bfd85b0c
bfd85ac8
bfd85b00
bfd85b08
bfd85ac8
上面是定义了一个stack类型的指针b,让它指向一个stack类型的变量ss
b--的时候,b会指向什么地方?
我认为是
b--等于b-sizeof(stack)*1
但是,从结果看来好象不是这样,到底是怎么一回事呢?
大家解释下吧http://www.ahiretyolcusu.com/!b-sizeof(stack) == (char *)p -
sizeof(stack) * 8b-sizeof(stack) == (char *)p - sizeof(stack) * 8
???p是什么
还是
b-sizeof(stack) == (char *)b - sizeof(stack) * 8
莫非是
b-sizeof(stack) == (char *)b - sizeof(stack) *sizeof(stack)
它亦把sizeof(stack)看成是和自己(b)一个类型的东东了
而
b--只是b-了 2个(int)就是sizeof(stack)就是8lenovo帮我看看我想的对不对b-- 等于 b -
sizeof(stack)*1
b- sizeof(stack) 等于 b - sizeof(stack) *sizeof(stack)
[ 本帖最后由 ljysyn 于 2
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。