LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: hoho_zhao

面试被鄙视,经验不足,一败涂地!请看我被问的问题!(100%原版)

[复制链接]
发表于 2006-12-9 16:11:47 | 显示全部楼层
struct
{
  int a;
  int b;
  char c;
};
我没研究过Linux C,只讲讲windows下的C的解法。
int 为4字节,没错,
char为1个字节也没错,不过,其实分配空间时,不可能只分配1个字节的空间,
由于你的int存在,所以,编译器分根据 sizeof(int)的长度,分配4个字节出来提供给“char c”使用,不过,“c”只占用了4个字节中的1个字节。
若结构体为
struct
{
  int a;
  int b;
  char c;
  char d;
}; 的话,结构体还只是占用了12个字节,因为你的给char 分配的4个字节还没被放满,直到4个字节被放满后,编译器才会再分配4个字节出来,如:
struct
{
  int a;
  int b;
  char c;
      char d;
      char e;
      char f;
      char g;
};   这样的话, 就为应该是:
4(a所占用的空间)+4(b)+4(c、d、e、f共同占用的)+4(g占用的) = 16。
========
若你的结构体为
struct
{
    double a;
    char b;
};
sizeof(double)为8个字节,所以,在此给char分配的空间也为 sizeof(double)个字节,
所以该结构体为 16个字节。
===========
以上只是个人见解,我也是学生,可能有误,不用BS我。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-9 21:31:59 | 显示全部楼层
谢谢!太感谢了,你的帖子为这个话题的讨论又增添了色彩!

hoho_zhao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表