马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
今天看了一篇关于结构体的文章写得很好
引用:原地址:https://coolshell.cn/articles/11377.html,文章作者陈皓,虽然大体知道缘故 但是没事没太懂 而且Test结构体输出字节是8,f是4
大神来点一点 #include <stdio.h>
struct str
{
char len;//1
int lens;//4
char s[0];
}Test;
struct foo
{
struct str *a;
}f = {0};
int main(void)
{
//struct foo f = {0};
printf("struct str sizeof = %d\n",sizeof(Test)); //占了5个字节 输出结果是8
printf("struct foo sizeof = %d\n",sizeof(f));
if( f.a->s )
{
printf("%x\n",f.a->s);//我知道是0x4 访问地址的问题导致下一行代码f.a->s被crash
printf(f.a->s);
}
return 0;
}
指针就只是一个地址,32位环境,4个字节
不管是什么指针,是不是包装在结构体中,都只是4个字节
|