C語言基礎 -52 構造類型_結構體內存問題及函數傳參

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),則存儲該數據,如果不可,則繼續移動,直到找到可以整除的地

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章