C 结构体和联合体&gdb 调试
1.结构体
struct _s{
char a; //1字节
int b; //4字节
long c; //8字节
void* d; //8字节
int e; //4字节
char *f; //8字节
}s;
Tips:并非
1+4+8+8+4+8=33
字节,可以通过s.a
取a
的值。
2.联合体
uoion _u{
char a; //1字节
int b; //4字节
long c; //8字节
void* d; //8字节
int e; //4字节
char* f; //8字节
}u
Tips:联合体是共用内存,后面覆盖前面。
3.结构体联合体实战
3.1 结构体实战
#include<stdio.h>
int main(){
struct _s{
char a;
int b;
long c;
void* d;
int e;
char* f;
}s;
s.a = 'a';
s.b = 1;
s.c = 2;
s.d = NULL;
s.e = 3;
s.f = &s.a; //a的首地址就是s的首地址
printf("size of struct s is %d\n",sizeof(s));
return 1;
}
编译和执行命令如下:
gcc struct.c -g -o struct //编译
./struct //执行
</