|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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个字节
|
|