用sizeof函数求出来的结构体名字的长度和结构体变量的长度有什么区别?定义了一个结构体node,struct node{int data;struct node *next;};再定义一个结构体变量lnodestruct node lnode;我发觉 sizeof(node)和sizeof

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 18:48:28
用sizeof函数求出来的结构体名字的长度和结构体变量的长度有什么区别?定义了一个结构体node,struct node{int data;struct node *next;};再定义一个结构体变量lnodestruct node lnode;我发觉 sizeof(node)和sizeof

用sizeof函数求出来的结构体名字的长度和结构体变量的长度有什么区别?定义了一个结构体node,struct node{int data;struct node *next;};再定义一个结构体变量lnodestruct node lnode;我发觉 sizeof(node)和sizeof
用sizeof函数求出来的结构体名字的长度和结构体变量的长度有什么区别?
定义了一个结构体node,
struct node
{
int data;
struct node *next;
};
再定义一个结构体变量lnode
struct node lnode;
我发觉 sizeof(node)和sizeof(lnode)是有区别的,他们的区别在哪里呢?

用sizeof函数求出来的结构体名字的长度和结构体变量的长度有什么区别?定义了一个结构体node,struct node{int data;struct node *next;};再定义一个结构体变量lnodestruct node lnode;我发觉 sizeof(node)和sizeof
#include
struct node
{
int data;
struct node *next;
};
struct node lnode;
int main()
{
printf("struct node size = %d\n",sizeof(struct node));
printf("node size = %d\n",sizeof(node));
printf("lnode size = %d\n",sizeof(lnode));
return 0;
}


输出:
struct node size = 8
node size = 8
lnode size = 8
Press any key to continue

这是VC++ 6.0的编译结果

--------------------------------------
在gcc里面,编译失败:sizeof(node);是不允许的,必须是sizeof(struct node).
删除这一行之后运行结果:
struct node size = 8
lnode size = 8
是一样的.
--------------------------------------
在Turbo C里面,也是编译失败,原因同上:
错误 noname.c 14: 未定义的符号'node'在 main 函数中
删除这一行之后运行结果:
struct node size = 4
lnode size = 4

也是一样的.
-----------------------------------------------------
应该是一样的才对.
楼主把你的程序和编译器版本发出来看看.