自定义数据类型:数据结构

任何用结构做到的事情,都可以用类做到。

数据结构struct

定义结构

[template-spec] struct [ms-decl-spec] [tag [: base-list ]]
{
   member-list
} [declarators];
[struct] tag declarators;

template-spec

可选模板规范。 见 模板规范

structstruct 关键字。
ms-decl-spec

可选存储类规范。见 __declspec 关键字。

tag

为结构提供的类型名称。 标记将变成结构范围内的保留字。 标记是可选项。 如果省略,则定义匿名结构。 有关详细信息,请参阅 匿名类类型

base-list

 此结构将从中派生其成员的类或结构的可选列表。 有关详细信息 ,请参阅基类 。 每个基类或结构名称都可以在访问说明符前面 (公共、 专用、 受保护的) 和 虚拟 关键字。 有关详细信息,请参阅 控制对类成员的访问 中的成员访问表。

member-list

结构成员列表。 有关详细信息,请参阅 类成员概述 。 此处的唯一区别是 struct 使用代替 class

declarators

 指定结构名称的声明符列表。 声明符列表声明了一个或多个结构类型实例。 如果结构的所有数据成员为 public,则声明符可能包含初始值设定项列表。 初始值设定项列表在结构中很常见,因为数据成员默认是 public 。 有关详细信息 ,请参阅声明器概述 。

struct PERSON     // 声明 PERSON 结构类型
{   
    int age;       // 声明成员类型
    long ss;
    float weight;
    char name[25];
} family_member;   //定义 PERSON 类型的对象

int main()
{
    struct PERSON sister;   // C风格结构声明
    PERSON brother;         // C++风格结构声明
     sister.age = 13;       // 为成员赋值
}

初始化结构

  • 将数据存入结构成员的方法,是在声明语句中为结构成员定义初始值。初始值在初始化列表内,逗号分开,与数组成员定义初始值的方式相同。

{}内的变量要注意顺序。

struct PERSON     // 声明 PERSON 结构类型
{
    int age;       // 声明成员类型
    float weight;
    char name[25];
} family_member;   //定义 PERSON 类型的对象

int main()
{
    PERSON brother{ 18,50.0 ,"jeff" };   // C++风格结构声明    
}

访问结构的成员

int main()
{
    PERSON brother{ 50.0,18 ,"jeff" };   // C++风格结构声明  
    std::cout << brother.age;
}

RECT结构

windows.h的windef.h头文件中有一个预定义的RECT结构。

typedef struct tagRECT {
  LONG left;
  LONG top;
  LONG right;
  LONG bottom;
} RECT, *PRECT, *NPRECT, *LPRECT;

MFC中也定义了CRect类。

使用指针处理结构

struct PERSON     // 声明 PERSON 结构类型
{
    int age;       // 声明成员类型
    float weight;
    char name[25];
} family_member;   //定义 PERSON 类型的对象

int main()
{
    PERSON brother{ 50.0,18 ,"jeff" };   // C++风格结构声明    
    PERSON* ptrPerson{};
    ptrPerson = &brother;

    std::cout << (*ptrPerson).age<<std::endl;
    std::cout << ptrPerson->age;
}
struct ListElement
{
    RECT aRect;
    ListElement* pNext;
};

 通过指针访问结构成员

括号用来解除对指针的引用,成员访问操作符.的优先级高级解除引用操作符*。

(*pNext).top += 10;

间接成员选择操作符(间接成员访问操作符)

间接成员选择操作符->专用于通过指针访问结构(或类)的成员。

pNext->top+=10;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值