多维指针

有人问我二三维指针的事,讲了一大堆,总结了以下代码:

void TestPointer()
{
        // 优先级 [] 高于 *,()高于[]
        int i,j,k;
        // 指针和数组
        // 看是指针还是数组要看他的名字(不带[]也不带*)能否直接对其进行内存分配
        // 因为数组是确定的分配好内存地址的,而指针则是用于指向地址的
        // 所以为指针分配内存或赋值时,应该理解为指向数组地址或其他地址

        // 读法:由低优先级向高优先级读
        // *Array0[10]:指针——数组
        // int **Array1[2]:指针——指针——数组(二维指针数组)
        // *(*pPointer4)[2]:指针——数组——指针(指向指针数组的指针)
        // (*pPointer3)[30][20]:数组——数组——指针(指向二维数组的指针)

        // 1、数组和指针数组 
        int Array[10];    // Array是数组,有10个元素,元素的类型是int型
        int *Array0[10];    // Array0是指针数组,有10个元素,元素的类型是int型指针
        for( i=0; i<10; i++ )
        {
                Array0 = new int[i+1];    // Array0是int型的指针
                delete[] Array0;
        }
        int **Array1[2];    // 一个指向指针的指针的数组(二维指针数组),拥有两个元素
        // 每一个元素都是int ** 型(指向指针的指针) ,但 Array1 终究也是个数组,
        Array1[0]=new int *[10];    // int *[10]为指针数组,见下面一条
        Array1[1]=new int *[10];
        delete [] Array1[0];
        delete [] Array1[1];

        // 2、指向数组的指针
        int *pPointer0=new int[10];    // pPointer0是指针,赋值号右边但申请的是一个数组,只不过用指针指向它

        // 指向“指针数组”的“指向指针的指针”
        // 定义一个数组,有10个元素,元素的类型是int*
        // 用指向指针的指针指向该指针数组, pPointer1[]表示数组中的每个元素(int *)
        // 为指针数组中每个元素申请空间,并为申请到的空间中的元素赋值
        int **pPointer1=new int*[10];
        for( i=0; i<10; i++ )
        {
                // *(pPointer1+i) = new int[i+1]; 也可
                pPointer1 = new int[i+1];
                for( j=0; j<i+1; j++ )
                {
                        // *(*(pPointer1+i)+j) = 1;
                        pPointer1[j] = 1;
                }
                delete[] pPointer1;
        }
        delete [] pPointer1;

        // 指向二维数组的指针,
        // 该二维数组最低维数的元素数量为8个,类型为int
        int (*pPointer2)[8];
        // 理解 (*pPointer2)[8]:
        // (*pPointer2)说明它是一个指针,
        // (*pPointer2)[8]说明p2一次跳过8个元素,
        //         即pPointer2指向一个二维数组,且最低维为8,该数组元素不是指针
        pPointer2= new int[10][8];
        for( i=0; i<10; i++ )
        {
                for( j=0; j<8; j++ )
                {
                        pPointer2[j] = 20;
                }
        }
        delete []pPointer2;  // 删除(释放)二维数组


        // 指向三维数组的指针,该三维数组低两维的元素数量为[30],[20],类型为int
        int (*pPointer3)[30][20];    // 这个数组低两维必须是确定的
        pPointer3=new int[1][30][20];
        delete []pPointer3;  //删除(释放)三维数组


        // 指向二维指针数组的指针
        // 声明一个3*2的二维数组,元素是指针,
        // 用一个指针的指针pPointer4指向该数组首地址
        // pPointer4[j]是该二维数组的每个元素,(i<=3 j<=2)
        int *(*pPointer4)[2] = new int *[3][2];
        // 对*(*pPointer4)[2]的理解:
        // (*pPointer4)说明pPointer4是指针,
        // (*pPointer4)[2]说明这个指针写成pPointer4时,一次跳两个元素,即pPointer4指向的数组最低维=2
        // *(*pPointer4)[2]说明每个元素都是指针
        for( i=0; i<3; i++ )
        {
                for( j=0; j<2; j++ )
                {
                        pPointer4[j] = new int [5];
                        for( k=0; k<5; k++ )
                        {
                                pPointer4[j][k] = 5;
                        }
                        delete[] pPointer4[j];
                }
        }
        delete[] pPointer4;
}

01、数据简介 出口韧性是地级市在面对外部震荡和压力时,能够承受并迅速适应、应对变化的能力。这种能力体现在地级市经济结构的灵活性、创新能力和竞争力,以及地方政府的政策支持和产业调整能力等多个方面。 城市出口韧性对于城市的经济发展、就业稳定、国际贸易地位以及风险抵御能力等方面都具有重要影响。因此,城市应加强出口韧性的建设,提高应对外部冲击的能力,以推动其经济的可持续发展。 数据名称:地级市-城市出口韧性数据 数据年份:2011-2022年 02、相关数据 代码 年份 地区 城市 省份 城市出口韧性 距离港口的最近距离 最终进口额_百万人民币2 最终出口额_百万人民币2 人均道路面积2 年末金融机构各项贷款余额万元2 地区生产总值万元2 科学支出万元2 地方财政一般预算内支出万元2 城镇居民人均可支配收入元2 固定资产投资2 实际使用外商投资额百万美元2 城镇化率2 外贸依存度 出口贸易 年平均汇率 实际使用外商投资额百万人民币2 外资依存度 金融发展水平 财政投资力度 科学技术水平 出口偏离度 x_地区生产总值万元2 x_城镇化率2 x_人均道路面积2 x_外贸依存度 x_出口贸易 x_出口偏离度 x_金融发展水平 x_城镇居民人均可支配收入元2 x_财政投资力度 x_科学技术水平 x_距离港口的最近距离 x_外资依存度 地区生产总值万元2_sum y_地区生产总值万元2 城镇化率2_sum y_城镇化率2 人均道路面积2_sum y_人均道路面积2 外贸依存度_sum y_外贸依存度 出口贸易_sum y_出口贸易 出口偏离度_sum y_出口偏离度 金融发展水平_sum y_金融发展水平 城镇居民人均可支配收入元2_sum y_城镇居民人均可支配收入元2 财政投资力度_sum y_财政投资力度 科学技术水平_sum y_科学技术水平
内容概要:本文档详细介绍了一个基于Matlab实现的无人机空中通信仿真资源包,系统涵盖了无人机通信、三维路径规划、状态估计与多机协同等多个核心技术模块的仿真代码与案例研究。内容聚焦于无人机在复杂环境下的三维路径规划(如基于遗传算法GA、粒子群算法PSO、动态窗口法DWA等)、无人机姿态与轨迹的状态估计算法(如扩展卡尔曼滤波器EKF、UKF、不变扩展卡尔曼滤波IEKF、粒子滤波PF等),以及无人机通信链路建模与优化,并融合智能优化算法对系统性能进行提升。此外,资源包还拓展至微电网优化、MIMO检测、图像融合、信号处理等相关科研领域,构建了一个以无人机技术为核心、多学科交叉融合的综合性仿真研究体系。; 适合人群:具备一定Matlab编程能力与控制系统基础知识,从事无人机系统设计、无线通信、自动化控制、智能优化算法或相关领域研究的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①开展无人机通信系统建模与性能仿真分析;②实现复杂动态环境中无人机三维路径规划与实时避障;③研究基于多源传感器融合的无人机导航与状态估计方法;④结合智能优化算法提升无人机任务执行效率与系统鲁棒性; 阅读建议:建议读者依据资源包提供的模块化结构系统学习,优先掌握Matlab/Simulink基本仿真技能,重点研读路径规划与状态估计部分的算法实现与代码细节,并通过实际调试与二次开发加深对无人机系统集成与优化策略的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值