book@100ask:~/C_coding/CH02$ cat struct1.c
#include <stdio.h>
#include <stdlib.h>
#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
上面,一個char,一個float,一個int,理論上這個struct共佔用1+4+4 = 9 byte的空間,而實際上佔用了12byte的空間,爲什麼?
數據存儲有一個公式, 該地址的“地址值”與“待存儲的數據類型所佔用的字節數”求餘,如果可以整除(餘數爲0),則存儲該數據,如果不可,則繼續移動,直到找到可以整除的地