24小时热门版块排行榜    

查看: 1693  |  回复: 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的回帖
查看全部 9 个回答

imyourkobe

铁杆木虫 (著名写手)

【答案】应助回帖

hu123rong00(金币+1): 2011-11-22 21:52:39
这个指针变量需要的空间是需要你动态给他分配的。
2楼2011-11-22 21:50:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

siqin123

新虫 (正式写手)

【答案】应助回帖


jjdg(金币+1): 感谢参与 2011-11-23 00:13:43
指针是地址,char型地址  

       int+char   我觉得是
坚持是一种信仰,积累是一种智慧
3楼2011-11-22 21:52:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

王者之璇

金虫 (小有名气)

【答案】应助回帖


余泽成(金币+1): 谢谢参与应助! 2011-11-26 23:32:59
结构体必须占内存,指针还需要一个动态的分配值,是自己给的,或者书上有。
4楼2011-11-23 01:16:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见