结构体的定义和基本使用(初步)

要说结构体有什么用,先来看一个表格
在这里插入图片描述
这个表格显示的就是一个结构化的信息,那我们怎么表示这个信息

以前我们是这样滴:

int ID[4]={ 2019001 , 2019002 , 2019003 , 2019004 };
char name[4][16]={ “Mary”,“Jhon”,“LiMing”,“Jim” };
char phone[4][16]={“18610011223”,“15688766551”,“17955845564”,“12366499846”};

//注意这个手机号不能定义为整形,因为它太大了,超出了int的范围,所以这里定义为字符数组类型。
这样写的话有缺点:比如信息散乱,不直观,容易重名,数据存取不方便等等。
如果现在要查找一个人的信息,假如按ID来查找,然后返回这个人的信息。现在我们可以采用输出参数的形式来返回信息。
但是如果信息量很大,就要定义很多输出参数,这样显然不好实现,所以这个时候就需要用结构体了。

struct:结构体
(1)它的基本形式是

struct TypeName
{
//members

};

struct是关键字,TypeName是新类型的名称,members是一系列成员变量。
TypeName的命名规则和变量名规则相同。
成员变量可以用普通的变量或数组定义
例如
struct contact
{
int ID;
char name[16];
char phone[16];
};
定义一个新类型contact,成员变量有ID,name,phone

struct的定义要放在函数体之外。

(2)变量的定义和初始化:
例如定义一个变量a

contact a; //不给初始值
也可以同时给初始值
contact a=
{
2019001, //int的初始化
“Mary”, //char数组的初始化
“15688766551”
};
注意:
1.不要忘记大括号末尾的分号
2.各字段的初始值要与该字段的类型匹配
3.初始值以逗号分开

初始化时也可以只初始化部分成员的变量。

我们也可以定义一个数组
contact cf[4]; //没有给初始值
也可以定义的同时初始化
例如上面的表格可以表示为:
contact cy[4]=
{
{2019001, “Mary” , “18610011223”},
{2019002, “Jhon” , “15688766551”},
{2019003, “LiMing” , “17955845564”},
{2019004, “Jim” , “12366499846”} //最后一个元素后不需要加逗号

};

我们现在与我们一开始表示方法对比一下:

int ID[4]={ 2019001 , 2019002 , 2019003 , 2019004 };
char name[4][16]={ “Mary”,“Jhon”,“LiMing”,“Jim” };
char phone[4][16]={“18610011223”,“15688766551”,“17955845564”,“12366499846”};

明显要比这种简洁

(3)成员的访问
用点号访问其成员
例如:
对一个变量的访问:
contact a;
a.ID=2019001;
strcpy(a.name,“Mary”);
strcpy(a.phone,“18610011223”); //对于字符串的拷贝要用strcpy(),同时前面头文件需要加上< cstring >
输出:
cout<<a.ID<<" “;
cout<<a.name<<” "<<a.phone;
输入的话和输出的道理相同

对数组变量的访问:
contact cy[4]=
{
{2019001, “Mary” , “18610011223”},
{2019002, “Jhon” , “15688766551”},
{2019003, “LiMing” , “17955845564”},
{2019004, “Jim” , “12366499846”}
};

例如输出Jhon的ID和电话号
cout<<cy[2].ID<<" "<<cy[2].phone;

注意contact只是一个类型的名字而已,不能写成cout<<contact.ID;

小结:
(1)初步学习用struct定义新类型。
(2)新类型变量的定义和初始化。
(3)对成员的访问,变量名+点号+成员名称。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值