Hi~ o( ̄▽ ̄)ブ
今天学习了结构体的相关知识点,在此做些总结,如果有不对或缺少的地方希望指正和补充。
假设有多个对象(id,人名,手机号等)
id : 10001 ,10002,10003…
对应人名:zhang,wang,li…
对应手机号:123000001,123000002,12300003…
现在以一个人的id来查找,返回这个人所有的信息(包括id,人名,手机号等)。
若把id,人名,手机号分开表示,万一数据过多,就会显得很乱,不直观,要写的相关函数也会因为字段太多变得很复杂。 (。^▽^)
ps: (取oo为函数名)
int oo(int id, char name[ ] , char phone[ ])**
{......
.....}
此时 可以用结构体函数来解决这样类似的问题。
struct 结构体:
将一些基本的类型组合起来,构成一个新的自定义的类型,这里我们命名为person
**
struct person
{ int id;
char name[ ];
char phone[ ];
};**
成员变量为 id,name,phone,
注意:struct定义要放在主函数外
在声明结构类型变量可以同时初始化
例: **
struct person
{ int id;
char name[ ] ;
char phone[ ];
}; worker1={10001 , "zhang" , "123000001" } ;
访问结构变量成员
#include<iostream>
using namespace std ;
struct weather // 声明结构类型
{ double temp; double wind; } ;
int main ( )
{ weather today ; // 声明结构类型变量
today . temp = 10.5 ; // 对结构变量成员赋值
today . wind = 3.1 ;
cout << “Temp = ” << today . temp << endl ; // 按成员输出
cout << “Wind = ” << today . wind << endl ;
}
对成员赋值时要加 ( . ).←这是个圆点
用指针访问结构变量
# include <iostream>
using namespace std ;
# include <cstring>
struct person
{ int id ; char name[20]; char phone[20]; } ;
int main ( )
{ person pr1 ;
person * pp ; // 定义结构指针
pp = & pr1 ; // 取结构变量地址
pp -> id = 10001 ;// 对结构成员赋值
strcpy ( pp -> name , “zhang” ) ;
strcpy ( pp -> phone , “123000001” ) ;
cout << pp -> id<< ‘\t’ << pp -> name<< ‘\t’ << pp -> phone<< endl ;
}
代码中对字符串的赋值用到了strcpy,若成员变量为直接的数可以直接用 = 号。
strcpy需要加上#include<cstring>
头文件。
类型相同的结构体变量还可以整体赋值
# include <iostream>
using namespace std ;
struct weather
{ double temp; double wind; } yesterday ;
int main ( )
{ weather today ;
yesterday . temp = 10.5 ;
yesterday . wind = 3.1 ;
today = yesterday ; // 结构变量整体赋值
cout << “Temp = ” << today . temp << endl ;
cout << “Wind = ” << today . wind << endl ;
}
已知yesterday的值,而today的值和yesterday的值相同且结构体类型相同,即可以 today = yesterday来进行整体赋值。(尽管结构变量类型,若结构体名不同不可整体赋值比如struct weather1和struct weather2的变量类型相同,结构体名不同,不可整体赋值)
结构数组同样可行,
struct person [3]
对结构体数组初始化的形式是在定义数组的后面加上
如果对三个人zhang,wang,li,进行投票,
struct person [3]={"zhang",0,"wang",0,"li",0}
初始票数都为0,把zhang,票数绑在一起,在进行循环计算票数,输出结果。
小结(老师写的(●’◡’●))
结构类型用struct定义,它由不同类型的数据成员组成。
结构变量在内存占有一片连续的存储区间。
结构变量成员用圆点运算符和箭头运算符访问。
数组元素为结构类型时,称为结构数组,定义和访问遵循数组和结构的语法规则。