[问题] 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