ZTQ 发表于 2018-8-20 14:57:40

结构体指针

刚学C语言   有个问题请大神解答
结构体指针p指向第一个结构体变量;那么p+sizeof(结构体名)为什么不等于第二个结构体变量的地址
举个小例子
struct a
{
        int a;
        int b;
}c,d;
struct a *p;
p=&c;
最后发现 &d!=p+sizeof(a)

无符号整形 发表于 2018-8-20 14:59:40

本帖最后由 无符号整形 于 2018-8-20 15:06 编辑

见4楼

ZTQ 发表于 2018-8-20 15:03:38

无符号整形 发表于 2018-8-20 14:59
*p+第一个成员大小才是吧。

可是我发现sizeof(结构体名)和sizeof(结构体变量名)   是一样的   而且都不行

无符号整形 发表于 2018-8-20 15:06:18

ZTQ 发表于 2018-8-20 15:03
可是我发现sizeof(结构体名)和sizeof(结构体变量名)   是一样的   而且都不行

嗯 很正常啊。
我猜我理解错了你的意思,我还以为是第二个成员的位置,好吧。。
确实有可能不等于的。

ZTQ 发表于 2018-8-20 15:19:07

无符号整形 发表于 2018-8-20 15:06
嗯 很正常啊。
我猜我理解错了你的意思,我还以为是第二个成员的位置,好吧。。
确实有可能不等于的。

那除了重新赋值外   有没有什么办法能让原本指向第一个结构体变量的指针指向第二个结构体变量呢?

无符号整形 发表于 2018-8-20 15:46:49

ZTQ 发表于 2018-8-20 15:19
那除了重新赋值外   有没有什么办法能让原本指向第一个结构体变量的指针指向第二个结构体变量呢?

没有办法了,除非你知道偏移量才能安全地改变指向

ZTQ 发表于 2018-8-20 15:51:37

无符号整形 发表于 2018-8-20 15:46
没有办法了,除非你知道偏移量才能安全地改变指向

哦哦谢谢!
页: [1]
查看完整版本: 结构体指针