结构体变量分配结构体本身大小的空间,结构体指针分配4个字节,其实任何类型的指针都是分配四个字节的指针空间。
所以:
A a[3]; //a里面是三个A变量,所以分配三个结构体大小
A *a; //a是一个指针,分配4个字节,就算A再大,a也只是4个字节,因为任何类型的指针都是4个字节。要使用a,必须先要对指针初始化,也即分配空间了。
如:
A *a;
a = (A*)malloc(sizeof(A));
也就是如果在结构体中,定义了一个指针,那么会分配4个字节,但是这个指针你无法使用,你必须自己malloc分配空间后,才可以使用这个指针。
结构体内的指针本身也是占4或者8个字节的,只是指针指向的地址(内存区域)需要自己malloc分配。