我们知道在C++中结构体和类是差不多的,有一个明显的区别就是:结构体默认的类型是公有的,而类中的成员默认是私有的。
但是在C语言中的结构体就与C++中的结构体有所不同了。先说一个小小的不同,C语言中定义结构体变量必须写上struct关键字,但是一个.cpp文件定义结构体变量,直接写结构体名称即可,因为我们上边说了,C++中结构体和类只有访问限定哪一个明显的区别,其他基本一样,所以结构体名称就相当于类名,所以就不必加上struct关键字。
接下来我们先来看一下C语言中一个空结构体的大小是多少?
#include<stdio.h>
struct Node
{
};
int main()
{
struct Node m;
printf("%d\n",sizeof(m));
return 0;
}
同样一份代码,我们分别在Windows底下的VS和Linux下gcc编译,惊讶的发现竟然是不一样的。
由图可以看出我们在VS中并不能定义一个空的结构体,所以也并不存在它的大小是多少。接下来同样的代码在Linux中编译,结果是通过的。