您的位置:首页 > 编程语言 > C语言/C++

C语言结构体初始化和结构体指针

2016-12-21 22:33 351 查看

结构体初始化

#include <stdio.h>
//结构体的声明和定义方法
//1.声明和定义分离
struct weapon{
char name[20];
int atk;
int price;
}; //声明
//定义
struct weapon weapon_1;
//====================================
//
//2.同时进行声明和定义,只适用于简单的程序
struct weapon
{
char name[20];
int atk;
int price;
}weapon_1;


结构体的访问

#include <stdio.h>

//结构体的声明
struct weapon{
char name[20];
int atk;
int price;
};

int main()
{
//结构体的初始化
struct weapon weapon_1 = {"weapon_name",100,200};

//结构体的访问
//weapon_1.name
printf("%s,%d\n",weapon_1.name,weapon_1.price);

//结构体数组,数组元素是结构体
//定义一个结构体数组
//struct weapon weapon_2[2]={"weapon_name1",50,100,"weapon_name2",100,200};
//printf("%s,%d\n",weapon_2[0].name,weapon_2[1].atk);//访问结构体数组索引0的name,索引1的atk
//或
//建议使用这种方式,更直观
struct weapon weapon_2[2]={{"weapon_name1",50,100},{"weapon_name2",100,200}};

printf("%s,%d\n",weapon_2[0].name,weapon_2[1].atk);//访问结构体数组索引0的name,索引1的atk
return 0;
}


结构体指针

#include <stdio.h>

//结构体的声明
struct weapon{
char name[20];
int atk;
int price;
};

int main()
{
//结构体的初始化
struct weapon weapon_1 = {"weapon_name",100,200};
//结构体指针
struct weapon * w;// w是指向struct weapon 类型的指针
w = &weapon_1;// w 指向weapon_1
//1.(*w).name // 括号不能省,因为.的优先级比()的优先级高
//2.w->name // 结构体中C语言允许使用指向运算符->
printf("%s,%s\n",(*w).name,w->name);//两种方式等价

struct weapon weapon_2[2] = {{"weapon_name1",50,100},{"weapon_name2",100,200}};;
struct weapon * p;
p = weapon_2;//p存放weapon_2中第一个结构体的地址,p->name与weapon_2[0].name等价
printf("%s\n",p->name);
p++;//p指向weapon_2第二个结构体,等价于weapon_2+1,weapon_2[1]
printf("%s\n",p->name);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: