24小时热门版块排行榜    

查看: 1706  |  回复: 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

hu123rong00

铜虫 (小有名气)

[求助] 结构体所占内存

struct
{
    int a;
   char *p;
}
按照谭浩强那本书来,结构体所占内存为所有成员所占内存之和,那里面有个指针怎么算啊?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yalefield

金虫 (文坛精英)

老汉一枚

【答案】应助回帖

★ ★ ★
余泽成(金币+3): 谢谢参与应助! 2011-11-26 23:33:08
严格说来,“结构体”是不占内存的;而按照这个结构体声明(静态)或分配(动态)的变量才占内存。
例如,结构体:
struct W
{
    int a;
   char *p;
};

如果有:
struct W h, m, n;
那么,h作为一个结构变量,它的“体积”是
sizeof (int) + sizeof (char *).
当然,m和n的体积与h一样。

指针本身也是要占体积的,而且,任何类型的指针,自身所占的体积是一样的。例如:
char * p1;
int * p2;
struct W * p3;
那么,sizeof (p1) = sizeof (p2) = sizeof (p3)。

指针本身的体积,与它所指向的变量的体积,是两码事。
5楼2011-11-23 08:53:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hu123rong00 的主题更新
信息提示
请填处理意见