话不多说,直接上代码
#include<stdio.h>
int main()
{
char a[1];
char b[0];
printf("%d,%d\r\n",sizeof(a),sizeof(b));//1,0
int c[1];
int d[0];
printf("%d,%d\r\n",sizeof(c),sizeof(d));//4,0
char e[10]="abc";
printf("%d,%d\r\n",sizeof(e),strlen(e));//10,3
char *f = "adc";
printf("%d,%d\r\n",sizeof(f),strlen(f));//8,3(64位系统)
char g[]="abc";
printf("%d,%d\r\n",sizeof(g),strlen(g));//4,3
}
#include<stdio.h>
union a{
struct f{
char a;
short b;
char c;
short d;
short e;
};
int f;
}aa;
int main()
{
union a ll;
printf("%d",sizeof(ll)); //12
}
//因为后面有个int导致是4字节对齐
注释是运行结果,有问题评论区解答。