首页 新闻 会员 周边

C基础结构问题

0
[待解决问题]
 1 typedef struct 
 2 {
 3     void *Head;
 4 
 5 }queue_t;
 6 
 7 typedef struct node
 8 {
 9     void *next;
10 
11 }node_t;
12 
13 
14 
15 void test_struct(void)
16 {
17     printf("%d\n",sizeof(node_t) );
18     printf("%d\n",sizeof(queue_t) );
19 }

结构体内存占用大小为何是8?

c
cxtx00的主页 cxtx00 | 菜鸟二级 | 园豆:206
提问于:2016-12-08 13:13
< >
分享
所有回答(4)
0

你是64位的系统吧?

换个32位的就会是4

吴瑞祥 | 园豆:29449 (高人七级) | 2016-12-08 13:15
1

在自己编译器上实验了一下,结果是4.楼主的结果是8只是因为你用的系统是64位,也就是一个地址需要8*8来表示。所以是8位。指针占的大小和操作系统的位数相关的 

Super_cpp | 园豆:202 (菜鸟二级) | 2016-12-08 17:23
0

指针类型的变量在64位系统中都是8位,在32位系统中都是占是4位

而结构体所占的内存的大小与结构体中的域有关,其大小是它的所有域所占内存的和的大小。

再回到你的例子中:

由于你的例子结构体成员都只有一个指针类型的变量的成员,所以该结构体所占的大小就是结构体内

指针变量所占的内存大小。

说到这应该就清楚了。

Hold_C | 园豆:206 (菜鸟二级) | 2017-06-23 17:49
0

32位的系统指针长度为4  64为系统的指针长度为8  你这个是64为的系统吧

漂洋过海的熊 | 园豆:210 (菜鸟二级) | 2018-07-05 20:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册