C语言中一个关于结构体的问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 02:32:58
请看以下代码:
#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.
计算一个结构体的长度,用第一个才是对的。