c语言定义结构体的时候内存空间是如何分配的
程序员文章站
2022-07-13 23:19:31
...
**
c语言定义结构体的时候内存空间是如何分配的
**
PS:(几句废话)学习刚刚接触结构体的时候发现这个东西真好用,不管什么,只要是能联系到一起,共属于一个东西的属性基本都可以写成一个结构体,后来慢慢知道了有一种东西叫做“对象”,也就是今后要学的C++和Java等语言要理解的,那么是不是c也可以面向对象呢?其实大家可以思考一下这个问题。
废话不多说,下面说正文
结构体虽然好用,但用多了就容易发现结构体也存在一些弊端,就是内存的对齐问题,有时候简简单单的几个长短不一的字符数组就可能发生越界访问的问题,令人困扰不已。
举个例子:
```c
#include <stdio.h>
typedef struct stu{
char name[6];
int a;
char num[7]
}STU;
int main()
{
STU p ;
printf("char %d int %d\n",sizeof(char),sizeof(int));
printf("STU %d\n",sizeof(STU));
printf("p.name %d p.num %d",sizeof(p.name) , sizeof(p.num));
return 0;
}
可以看出int,char分别占有4,1个字节,结构体却占了20个字节,明显和我们的想想不一样,多出了3个字节的内存。
。。。。。。未完待续,有空在码字。。。