[問題] C 資料型態位元組的問題

作者: elohacp4 (Liou)   2015-05-01 23:18:05
看書看到一半突然發現有這個地方怪怪的,簡單的說
就是利用sizeof()來看位元組的大小看不懂....。
程式碼如下:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
struct data
{
char name[10];
int math;
}student={"Bird",98};
printf("sizeof(student)=%d\n",sizeof(student));
system("pause");
return 0;
}
此時印出的是16
把char name[10]改成char name[11]印出的還是16
改成[20]是24
改成[50]是56
改成[51]是56.....
有先了解一下 int是4個位元組,char是1個位元組
請問造成這些原因是什麼呢?謝謝
作者: LPH66 (-6.2598534e+18f)   2015-05-01 23:20:00
對齊問題, 就是編譯器將東西的位址對齊到 4 的倍數對 32 位元的機器有對齊 4 位元組的東西存取比沒對齊的快這裡被對齊的是結構裡的 int 變數, 為此在前面的 char 陣列之後補了零至數個位元組到 4 的倍數,然後才是這個 int 變數

Links booklink

Contact Us: admin [ a t ] ucptt.com