为什么使用结构体?
struct My
{
char name[20] = "如风斩岳";
int age;
char addr[50] ;
int money;
double Coordinates;
//.....
};
当我们有这样一种需求,在一个结构里需要存放不同种类和宽度的信息的时候,结构体应运而生
struct说明这是一个结构体,这个结构体,是一个新的类型
新的类型是结构体(包含了很多信息),新类型的名字叫My,这个My类型和char,short,int一个级别
只要能用int的地方,就能用My(这个结构体)(局部变量,全局变量,参数,返回值等等)
struct只是创建了一个类型,就像int一样,你还需要int a=3;而不是int直接就能使用,同理My也要声明
My m;
My是变量类型,m是变量名称;定义完就可以直接使用了
printf("%s", m.name);
//因为初始化过name了
char name[20] = "如风斩岳";
//所以直接打印的时候:
当然我们可以对这个变量m进行赋值,就像一个数组一样
m.age = 20;
strcpy(m.addr, "重庆xxxxx");
m.money = -200;
m.Coordinates = 200.300;
通过对变量m赋值,就可以使用这个结构体了!
printf("名字:%s\n年龄:%d\n地址:%s\n...", m.name, m.age, m.addr);
My m;
00351982 8D 4D A0 lea ecx,[m]
00351985 E8 A6 FD FF FF call `main'::`2'::My::My (0351730h)
m.age = 20;
0035198A C7 45 B4 14 00 00 00 mov dword ptr [ebp-4Ch],14h
strcpy(m.addr, "重庆xxxxx");
00351991 68 3C 7B 35 00 push offset string "\xd6\xd8\xc7\xecxxxxx" (0357B3Ch)
00351996 8D 45 B8 lea eax,[ebp-48h]
00351999 50 push eax
0035199A E8 BE F8 FF FF call _strcpy (035125Dh)
0035199F 83 C4 08 add esp,8
m.money = -200;
003519A2 C7 45 EC 38 FF FF FF mov dword ptr [ebp-14h],0FFFFFF38h
m.Coordinates = 200.300;
003519A9 F2 0F 10 05 70 7B 35 00 movsd xmm0,mmword ptr [__real@406909999999999a (0357B70h)]
003519B1 F2 0F 11 45 F0 movsd mmword ptr [ebp-10h],xmm0
在汇编里,根本无法分辨是结构体还是普通变量 !
结构体指针:暂无