C语言中一个关于结构体的问题
来源:百度知道 编辑:UC知道 时间:2024/06/16 10:36:38
请看以下代码:
#include<stdio.h>
struct person
{
char num;
char x;
struct person *next;
};
int main()
{
struct person a;
int n=sizeof(a);
printf("%d",n);
return 0;
}
运行结果是:8
当我把语句: struct person a;
改成 struct person *a;
时,运行结果:4
请问这是为什么??
我要计算一个结构体的长度,到底哪个是正确的?
#include<stdio.h>
struct person
{
char num;
char x;
struct person *next;
};
int main()
{
struct person a;
int n=sizeof(a);
printf("%d",n);
return 0;
}
运行结果是:8
当我把语句: struct person a;
改成 struct person *a;
时,运行结果:4
请问这是为什么??
我要计算一个结构体的长度,到底哪个是正确的?
我们现在一般使用的指针都是32位的,也就是4字节
所以任何指针的长度都是4byte
计算结构体的长度当然是用 sizeof(person)
你说的 sizeof(person *)是计算指针长度,没任何意义
另外不要乱加struct ,只有在第一次声明时用比较好,以后在建立变量时,加了也白加
第一个是正确的,第二个变成了求指向结构体指针的长度了,C语言中指针的长度就是4(32Bit)。
---
以上,希望对你有所帮助。
第二个是指针的大小,32位系统肯定是4.
计算一个结构体的长度,用第一个才是对的。