C语言结构体的疑问

zhoujiamurong 2008-05-19 06:03:39
struct b{
long b1;
long b2;
long b3;
char b4;
};

struct a{
struct b;
};
main()
{
printf("size of %d\n",sizeof(a));
}
结果为什么是1啊?
谢谢指教!
...全文
354 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoujiamurong 2008-05-19
  • 打赏
  • 举报
回复
#include <stdio.h>

struct b
{
long b1;
long b2;
long b3;
char b4;
};

struct a
{
struct b ;//其实大家可以想一下为什么这里可以编译通过?
//char b2; //加上这个再看 size 就知道了
};
main()
{
struct a aa;
printf("size of %d\n",sizeof(aa));
}
zhoujiamurong 2008-05-19
  • 打赏
  • 举报
回复
重申---代码没有问题,代码是微软的DDK头文件改写。
我现在知道原因了,不管结构体大小如何,即使为空,也要占位置,长度为 1,还是谢谢大家
capoatguitar 2008-05-19
  • 打赏
  • 举报
回复
就按照楼上面说的,结构提声明内加另一个结构提的对象即可。
effective_person 2008-05-19
  • 打赏
  • 举报
回复
struct a{ 
struct b; // 只是声明b结构体 没有定义。
};


struct a{ 
struct b s; // 试试吧!看看有什么不同
};
baihacker 2008-05-19
  • 打赏
  • 举报
回复
struct a{
struct b b;
};
这样就可以了...
因为你的struct a内并没有数据,于是编译器填充了一个字节
(我这里的第一个b是struct附属名,第二个是变量名,呵,这样有点混淆)
struct a{
struct b _b;
};
这样就好看多了
clhposs 2008-05-19
  • 打赏
  • 举报
回复
是你代码问题 你没有定义
[code=C/C++]
#include<stdio.h>

struct b
{
long b1;
long b2;
long b3;
char b4;
};

struct a
{
struct b bb;
};
main()
{
struct a aa;
printf("size of %d\n",sizeof(aa));
}
[/code
自己编译看结果

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧