C++结构详解

什么是结构?哪些情况下需要使用结构?结构的语法要点?

结构的定义

在C++中,结构(structure)与类几乎是完全一样的类型,(结构是一种数据类型)差别仅仅在于缺省情况下结构的成员为公有的。

在C语言阶段,结构就已存在,但它只有公有的数据成员。正因为如此,C++程序员仍然使用结构,但是只为结构安排公有的数据成员。当只使用数据成员,而且这些数据成员的类型往往互不相同时,总是采用结构类型,而不采用类。因为这样程序更易读易懂。

定义结构类型的格式如下:
struct 结构类型名
{
    类型名 变量1;
    《类型名 变量2;…;》
};
//最后的分号不可少

例如,下面给出的库存货物(inventory、员工(employee)两个结构类型:

struct inventory
{
       char description[15] ; //货物名称
       char no[10] ; //货号
       int quantity ; //库存数量
       double cost ; //成本
       double retail ; //零售价格
} ;

struct employee
{
       char name[27] ; //员工姓名
       char address[30] ; //家庭住址
       long zip ; //邮政编码
       long telenum ; //联络电话
       double salary ; //工资
};

结构的使用——通过结构型变量

◆ 1、结构是一种派生数据类型,定义结构时并不分配存储空间,只有定义了结构类型的变量,编译系统才为结构变量分配存储空间

定义变量方法如下:设有两个雇员———man1和man2,如此定义: employee man1 , man2 ;

◆ 2、对结构变量可以在定义时初始化。方法是:
在花括号中顺序填入结构中的(数据)成员的初始值:
    employee emp1={“朱明”,“四牌楼2号”,210096,83792666,2430.0},
    emp2={“沈俊”,“丁家桥15号”,210009,83273389,1920.0};

◆ 3、 结构变量的访问与类的对象一样,可使用成员访问操作符之一的“点操作符”,对成员一个个进行:
    变量名 . 成员名

◆ 4、与同类的对象之间可以拷贝一样,同结构类型的变量之间也可以作为整体相互赋值(拷贝)(因为结构的组成与大小是固定的,这一点与数组不同)

在C++中,赋值运算符“=”理解为隐式拷贝赋值操作符(Copy Assignment Operator)。如按前面的定义,emp1=emp2是合法的,这时emp2中的内容成为emp1的拷贝。但同类型变量不能比较大小。

◆ 5、结构变量也可以作为函数的参数和返回值,结构作为参数也是按值(复制)进行传递的,当然也可以按引用传递。

在程序文件中强烈推荐将结构类型的定义放在所有函数的外面,这样程序文件中的各个函数可以按需要在各个函数中声明局部的结构变量。因为,在各函数中定义结构类型,即使两个函数中定义的完全一样,系统也完全认为是两种结构类型。

◆ 6、结构可以嵌套,如上面所定义的员工(employee)结构类型可改为如下定义:
struct mail
{
       char address[30] ; //地址
       long int zip ; //邮政编码
       long int telenum ; //电话号码
};

struct employee
{
       char name[25] ; //员工姓名
       mail addinfo ; //结构变量作为成员,嵌套
       double salary ; //工资
};

结构成员必须是已定义过的结构,结构成员决不能是结构自身(这会引起无穷递归)。

访问结构变量的结构成员的方法:用连续点号来访问结构变量的结构成员。例如有程序段:
    employee emp1={“朱明”,“四牌楼2号”,210096,83792666,2430.0};
    cout<<emp1.addinfo.telenum ;

输出为:
    83792666。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值