C++ 结构体嵌套

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35451572/article/details/83379763

该博客主要是示例如何使用结构体嵌套进行函数变量的封装传递。

主要任务是使用一个结构体包含一些目标的名称、距离、角度信息。不同场景下的目标数量是不一样的,所以不能使用固定的数组来进行存储,使用数组太大时浪费空间,太小是又担心不能正确存储信息。所以建议使用结构体嵌套的方法来进行定义,这样方便进行有效存储与传递。

嵌套结构体的定义

struct TargetInfo
{
    string TargeName;
    float angle;
    float distance;
};


struct TargetsInfos
{
    int num;
    struct TargetInfo *info;
};

在上边的程序中,我们建立了两个结构体第一个是结构体TargetInfo,该结构体中是用来存储目标的信息,其中包含字符型目标名称、float型的目标角度和距离信息。建立的第二个结构体是这批目标信息,包含的是这批目标的数量和每一个目标具体TargetInfo``结构体的信息。这里使用指针的方式进行引入。

嵌套结构体的使用

GetStruct(float num)
{
    TargetInfo Info;
    Info.angle = num;
    Info.distance = num;
    Info.TargeName = num;
    return Info;
}

    TargetsInfos infos;
    infos.size = 5;
    infos.info = new TargetInfo[infos.size];
    for(float i = 0;i < infos.size;i ++)
    {
        infos.info[(int)i] = GetStruct(i);
    }

这里我们借助一个GetStruct()函数进行简单地结构体赋值。需要注意的是:

infos.info = new TargetInfo[infos.size];这里使用的是new建立新的数组来存储目标信息,所开辟空间的大小正好可以使用目标的数量来作为判断标准进行赋值。

infos.info[(int)i] = GetStruct(i);这个是借助韩式进行赋值,也可以单个变量进行赋值,例如infos.info[1].angle = 5;

猜你喜欢

转载自blog.csdn.net/qq_35451572/article/details/83379763