linux c中局部变量/全局变量一瞥

来源:互联网 发布:塔人网络接收奇迹世界 编辑:程序博客网 时间:2024/06/05 16:03

全局变量:

#include <stdio.h>
#if 1
#pragma pack (1)
char c = 0;
char e = 1;
struct a {} b, d;
#pragma pack ()
#endif
int main()
{
#if 0
#pragma pack (1)
char c = 0;
//char e = 1;
struct a {} b, d;
#pragma pack ()
#endif
        struct a *ref_a = &b;
        struct a *ref_b = &d;
        printf("sizeof struct %d\n", sizeof(struct a));
        printf("sizeof data   %d\n", sizeof(b));
        printf("address 1st   %p\n", ref_a);
        printf("address 2nd   %p\n", ref_b);
        printf("address none1 %p\n", &c);
//      printf("adderss none2 %p\n", &e);
        return 0;
}

===============================================================================================================================================

>>./a.out

sizeof struct 0
sizeof data   0
address 1st   0x80496ec
address 2nd   0x80496ec
address none1 0x80496e8

===============================================================================================================================================

局部变量:

#include <stdio.h>
#if 0
#pragma pack (1)
char c = 0;
char e = 1;
struct a {} b, d;
#pragma pack ()
#endif
int main()
{
#if 1
#pragma pack (1)
char c = 0;
//char e = 1;
struct a {} b, d;
#pragma pack ()
#endif
        struct a *ref_a = &b;
        struct a *ref_b = &d;
        printf("sizeof struct %d\n", sizeof(struct a));
        printf("sizeof data   %d\n", sizeof(b));
        printf("address 1st   %p\n", ref_a);
        printf("address 2nd   %p\n", ref_b);
        printf("address none1 %p\n", &c);
//      printf("adderss none2 %p\n", &e);
        return 0;
}


===============================================================================================================================================

./a.out

sizeof struct 0
sizeof data   0
address 1st   0xbf9591eb
address 2nd   0xbf9591eb
address none1 0xbf9591eb

原创粉丝点击