【好程序员笔记分享】—— C语言中的结构体

C语言中可以通过数组来表示每一个元素都是相同类型的数据,但当我们遇到元素之间是不同数据类型的整体刚怎么办呢?这个时候,我们就要用到结构体了。下面我们来看一个结构体的例子。代码如下:

#include <stdio.h>

struct Studer{
    char *name;//C语言中没有字符串类型,定义字符串用字符指针或字符数组实现
    int number;
    char class[20];
};

int main(int argc, const char * argv[]) {
    //定义一个结构体,结构体中还可以除递归定义自己以外的其他结构体
    struct People {
        char *sex;
        int age;
        float height;
        struct Studer stu;
    } peo = {"男",10,1.4f,{"小明",23,"三年级一班"}};
    
    printf("修改前%s的年龄是%d岁\n",peo.stu.name,peo.age);
    
    peo.age=11;

    printf("修改后小明的年龄是%d岁\n",peo.age);

    //定义一个结构体数组
    struct People a[2] = {{"男",10,1.4f,{"小军",25,"三年级一班"}},{"女",10,1.4f,{"小红",24,"三年级一班"}}};
    
    printf("修改前%s的学号是%d号\n",a[0].stu.name,a[0].stu.number);
    
    a[0].stu.number=10;
    
    printf("修改后%s的学号是%d号\n",a[0].stu.name,a[0].stu.number);
    
    //定义一个结构体指针
    struct People *p = &peo;
    
    printf("修改前%s的身高是%.1f米\n",(*p).stu.name,(*p).height);
    
    (*p).height=1.45f;
    
    printf("修改后%s的身高是%.2f米\n",(*p).stu.name,(*p).height);
    
    //定义一个指向数组的结构体指针
    struct People *q = &a[0];
    printf("修改前小军的名字是%s,他的身高是%.2f米\n",(*q).stu.name,(*q).height);

    (*q).stu.name="晓军";
    
    (*q).height=1.65f;
    
    printf("修改后小军的名字是%s,他的身高是%.2f米\n",(*q).stu.name,(*q).height);
    
    return 0;
}

输出结果如下:

修改前小明的年龄是10岁
修改后小明的年龄是11岁
修改前小军的学号是25号
修改后小军的学号是10号
修改前小明的身高是1.4米
修改后小明的身高是1.45米
修改前小军的名字是小军,他的身高是1.40米
修改后小军的名字是晓军,他的身高是1.65米

上面代码中有结构体的定义,也有包含结构体的结构体定义,还有结构体数组的定义和结构体指针的定义,甚至还有指向数组的结构体指针。一般对结构体变量的操作是以成员为单位进行的,一般形式:结构体变量名.成员名。结构体数组中也可以用数组下标访问每一个元素,就跟普通数组的用法一样,本例中的 a[0].stu.number就是其中的一种使用。结构体的指针也是跟我们普通指针的用法类似。

好了,今天就学习这么多,我们好好将这个例子理解并融汇贯通。

内容概要:本文介绍了一个基于MATLAB实现的无人机三维路径规划项目,采用蚁群算法(ACO)与多层感知机(MLP)相结合的混合模型(ACO-MLP)。该模型通过三维环境离散化建模,利用ACO进行全局路径搜索,并引入MLP对环境特征进行自适应学习与启发因子优化,实现路径的动态调整与多目标优化。项目解决了高维空间建模、动态障碍规避、局部最优陷阱、算法实时性及多目标权衡等关键技术难题,结合并行计算与参数自适应机制,提升了路径规划的智能性、安全性和工程适用性。文中提供了详细的模型架构、核心算法流程及MATLAB代码示例,涵盖空间建模、信息素更新、MLP训练与融合优化等关键步骤。; 适合人群:具备一定MATLAB编程基础,熟悉智能优化算法与神经网络的高校学生、科研人员及从事无人机路径规划相关工作的工程师;适合从事智能无人系统、自动驾驶、机器人导航等领域的研究人员; 使用场景及目标:①应用于复杂三维环境下的无人机路径规划,如城市物流、灾害救援、军事侦察等场景;②实现飞行安全、能耗优化、路径平滑与实时避障等多目标协同优化;③为智能无人系统的自主决策与环境适应能力提供算法支持; 阅读建议:此资源结合理论模型与MATLAB实践,建议读者在理解ACO与MLP基本原理的基础上,结合代码示例进行仿真调试,重点关注ACO-MLP融合机制、多目标优化函数设计及参数自适应策略的实现,以深入掌握混合智能算法在工程中的应用方法。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值