C语言学习迄今为止不懂的例子
例子_1
#include "myself.h"
int main(void) {
double dx;
char ca;
char cx;
double dz;
char cb;
double _Alignas(double) cz;
printf("char alignment: %zd\n", _Alignof(char));
printf("double alignment: %zd\n", _Alignof(double));
printf("double &dx: %p\n", &dx);
printf("char &ca: %p\n", &ca);
printf("char &cx: %p\n", &cx);
printf("double &dz: %p\n", &dz);
printf("char &cb: %p\n", &cb);
printf("char &cz: %p\n", &cz);
return 0;
}
这是输出
char alignment: 1
double alignment: 8
double &dx: 000000d99a9ffc48
char &ca: 000000d99a9ffc47
char &cx: 000000d99a9ffc46
double &dz: 000000d99a9ffc38
char &cb: 000000d99a9ffc34
char &cz: 000000d99a9ffc28
我已经用_Alignas(double)声明了cz变量,表明这个数据是内存对齐的。但是输出表示,这个cz占用的字节并不是八字节。而bc占用了它的第八个字节。
本文来自博客园,作者:Ethan&Young,转载请注明原文链接:https://www.cnblogs.com/cyberdoc/p/16176687.html

浙公网安备 33010602011771号