首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

构造体与指针!

2013-09-05 
结构体与指针!!!有如下结构体的声明:struct data{char xint yint zstruct data p}这种类型的自引用是

结构体与指针!!!
有如下结构体的声明:
struct data
{
char x;
int y;
int z;
struct data p;
};
这种类型的自引用是非法的。而下面这个声明确是合法的:
struct data
{
char x;
int y;
int z;
struct data *p;
};
这个声明和前面那个声明的区别在于p现在是个指针而不是结构。编译器在结构的长度确定之前就已经知道指针的长度,所以这种类型的自引用时合法的。
为什么说编译器在结构的长度确定之前就已经知道指针的长度?此例中指针的长度是多少,为啥不能用sizeof(p)求?

[解决办法]
这个就是和链表差不多了
指针大小在32位机上都是4个字节大小的,可以确定结构体大小!
[解决办法]

引用:
Quote: 引用:

补充下...还要考虑数据对齐的情况 实际大小可能会变大一点..这个暂时不考虑

哪些情况需要考虑数据对其?

对32位系统来说,一般长度是4个字节,所以大小都是4的整倍数,介于4的倍数之间的就要对齐
64位的话就是8字节

你可以看下这里

热点排行