1 . 结构体的声明和定义
结构体:不同类型变量数据的集合;
第一种定义方式(最常用):
#include<stdio.h>
struct weapon{
char name[20];
int atk;
int price;
};//一定别忘了这个冒号;
int main{
struct weapon weapon_1={"weapon_name",100,200};
return 0;
}
第二种定义方式:
#include<stdio.h>
struct weapon{
char name[20];
int atk;
int price;
}weapon_1; //相当于定义了一个全局变量,变量的类型是struct weapon,变量的名称是weapon_1;
int main{
return 0;
}
此写法结构不够清晰,程序不利于维护;
第三种定义方式:
struct{
char name[20];
int atk;
int price;
}waapon_1;
此种写法不能再定义其他名称的结构体变量;
2 . 结构体的初始化和引用
普通结构体的初始化和引用:
struct weapon weapon_1={"weapon_name",100,200};
printf("%s\n%d\n",weapon_1.name,++weapon_1.price);
结构体数组的初始化和引用:
struct weapon weapon_2[2]={{"weapon_name1",100,50},{"weapon_name2",100,200}};//里面的花括号也可以不加;
printf("%s\n%d\n",weapon_2[0].name,weapon_2[1].atk);
3 . 结构体指针
结构体变量指针:
struct weapon* w;
w=&weapon_1;
printf("name =%s\nname =%s\n",(*w).name,w->name);//same result;
结构体数组变量指针:
struct weapon* p;
p = weapon_2;
printf("%s\n",p->name);
p++;// equal weapon_2 +1 指向weapon_2[1];
printf("%s\n",p->name);