• 复杂的数据类型5 C++快速入门11


    复杂的数据类型5

     

    让编程改变世界

    Change the world by program


     

    对象的基础 —— 结构

      C语言和C++有许多共同的优美之处。其中之一便是程序员不必受限于这两种语言自带的数据类型的束缚。 C和C++的程序员完全可以根据具体情况定义一些新的数据类型并创建新类型的变量。   事实上,这个概念一直贯穿于C++的核心:对象 但首先,我们讲一个比较简单的例子:结构  

    结构(Structure)是一种由程序员定义的、由其他变量类型组合而成的数据类型。

      定义一个结构的基本语法是: struct name {

    type varName1;

    type varName2;

    。。。。。。

    }; // 请注意,别忘记这个小不点^_^  

    结构的应用

      当需要处理一些具有多种属性的数据时,结构往往是很好的选择。 例如当我们在编写一个鱼油档案管理程序时,涉及到的基本特征有:姓名、身份证、性别。。。 struct FishOil {

    std::string name;

    std::string uid;

    char sex; // F==Female, M==Male

    } 注意:C++对于一个结构所能包含的变量的个数是没有限制的,那些变量通常我们成为该结构的成员,他们可以是任意一种合法的数据类型。   回到刚才的例题,在定义了一个结构之后,就可以使用如下所示的语法来创建该类型的变量了:

    FishOil Jiayu; // 创建一个FileOil结构类型Jiayu

    Jiayu.name = “小甲鱼”;

    Jiayu.uid = “fishc_00000”;

    Jiayu.sex = ‘M’;

     

    回顾一下刚才的做法:

    定义结构 用”.”对结构成员进行赋值 如果我们在创建一个结构类型变量的时候就已经知道它各个成员相关的值,我们可以在声明新变量的同时进行赋值。 FishOil Jiayu = { “小甲鱼”, “fishc_00000”, ‘M’ }    

    结构与指针

      在C、C++里,指针无所不能,也可以指向结构,就像指向其他任何变量那样。 但我们有一个问题是:怎样才能通过指针解引用该指向结构的各个成员?(或者说是通过指针访问各个成员的值) 我们从地球的起源说起。。。。。。  

    定义一个结构:

    struct FishOil {

    std::string name;

    std::string id;

    char sex; // F==Female, M==Male

    }   创建一个FishOil类型的变量:

    FishOil Jiayu = { “小甲鱼”, “fishc_00000”, ‘M’ }

      创建一个指向该结构的指针:

    FishOil *pJiayu = &Jiayu;

    注意:因为指针的类型必须与指向的地址的变量的类型一致,所以pJiayu指针的类型也是FishOil  

    我们可以通过对指针进行解引用来访问相应的变量值

    (*pJiayu).name = “黑夜”;

    (*pJiayu).id = “fishc_00001”;

     

    如果你觉得刚刚的方法不够地道不够味儿,可以换用第二种方法:

    i.e. …… ……

    pJiayu -> name = “黑夜”;

    pJiayu -> id = “fishc_00001”;

    pJiayu -> sex = F;

    std::cout << pJiayu -> name;

    std::cout << pJiayu -> id;

    std::cout << pJiayu -> sex;

     

    课后练习

      【要求】 定义一个结构,至少存储:姓名、身份证、性别 实现文件存储 可以打印到屏幕   【演示】 FishOil.cpp(源代码下载 基本框架参考(参考资料下载 [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://urlxf.qq.com/?7zEjI3j']视频下载[/Downlink] [Downlink href='http://kuai.xunlei.com/d/LHTDWXADRRPC']备胎下载[/Downlink]
  • 相关阅读:
    echars柱状图修改每条柱的颜色
    vue打开到新页面,并传递参数
    彻底了解websocket原理
    bind和on的区别
    Vue如何更新子组件
    Vue父子组件生命过程
    使用css3实现动画来开启GPU加速
    前端技术体系
    Vue中的~(静态资源处理)
    垂直居中的办法小结
  • 原文地址:https://www.cnblogs.com/LoveFishC/p/3846163.html
Copyright © 2020-2023  润新知