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?
你是64位的系统吧?
换个32位的就会是4
在自己编译器上实验了一下,结果是4.楼主的结果是8只是因为你用的系统是64位,也就是一个地址需要8*8来表示。所以是8位。指针占的大小和操作系统的位数相关的
指针类型的变量在64位系统中都是8位,在32位系统中都是占是4位
而结构体所占的内存的大小与结构体中的域有关,其大小是它的所有域所占内存的和的大小。
再回到你的例子中:
由于你的例子结构体成员都只有一个指针类型的变量的成员,所以该结构体所占的大小就是结构体内
指针变量所占的内存大小。
说到这应该就清楚了。
32位的系统指针长度为4 64为系统的指针长度为8 你这个是64为的系统吧