C语言基础 -52 构造类型_结构体内存问题及函数传参

book@100ask:~/C_coding/CH02$ cat struct1.c
#include 
#include 

#define NAMESIZE 32

struct simp_st
{
	int i;      // 占用4个字节的存储空间
	float f;    // 占用4个字节的存储空间
	char ch;    // 占用1个字节的存储空间
};

int main()
{
// TYPE NAME = VALUE;

	struct simp_st a;
	struct simp_st *p = &a;
	printf("sizeof(struct) = %d\n",sizeof(a));
	printf("sizeof(pointer) = %d\n",sizeof(p));
	exit(0);
}


book@100ask:~/C_coding/CH02$ make struct1
cc     struct1.c   -o struct1


book@100ask:~/C_coding/CH02$ ./struct1
sizeof(struct) = 12
sizeof(pointer) = 8

C语言基础 -52 构造类型_结构体内存问题及函数传参_第1张图片

上面,一个char,一个float,一个int,理论上这个struct共占用1+4+4 = 9 byte的空间,而实际上占用了12byte的空间,为什么?

数据存储有一个公式, 该地址的“地址值”与“待存储的数据类型所占用的字节数”求余,如果可以整除(余数为0),则存储该数据,如果不可,则继续移动,直到找到可以整除的地

你可能感兴趣的:(Linux,C编程)