c++ 代码如何运行,优化

被迫使用c++,查找百度一下午写出了这个东西.希望能帮忙解惑
我写了一个代码如下

#include <iostream>

double *  disp11(unsigned char *rev)
{
    /*
    *
    */
    union gyro
    {
        char ch[4];
        float f;
        int si;
    };
    union gyro Gyrox[4], Gyroy[4], Gyroz[4];
    unsigned short int data_temp1;
    int  i, j;
    double angleRT[16];
    unsigned short int YearMonth;     //年
    unsigned short int Product_ID_T; //产品编号

    i = 2;
    Product_ID_T = rev[2] + rev[3] * 256; //产品编号
    YearMonth = rev[4] + rev[5] * 256;      //年

    i = 11;
    j = 0;
    Gyrox[0].ch[0] = rev[i++]; //经度
    Gyrox[0].ch[1] = rev[i++];
    Gyrox[0].ch[2] = rev[i++];
    Gyrox[0].ch[3] = rev[i++];
    angleRT[0] = Gyrox[0].f;
    

    i = 15;
    j = 0;
    Gyrox[0].ch[j++] = rev[i++]; //纬度
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    angleRT[1] = Gyrox[0].f;
    i = 19;
    j = 0;
    Gyrox[0].ch[j++] = rev[i++]; //高度,m
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    angleRT[2] = Gyrox[0].f;

    i = 23;
    j = 0;
    Gyrox[0].ch[j++] = rev[i++]; //航向
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    angleRT[3] = Gyrox[0].f;

    i = 27;
    j = 0;
    Gyrox[0].ch[j++] = rev[i++]; //步数
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    angleRT[4] = Gyrox[0].f;

    //步幅度,低字节
    data_temp1 = rev[32] * 256 + rev[31];
    angleRT[5] =(double)data_temp1;

    angleRT[6] =(double)rev[33]; //卫星数
    angleRT[7]= (double)rev[34]; //状态字1
    angleRT[8] = (double)rev[35]; //状态字2
    angleRT[9] = (double)Product_ID_T; //状态字2


    angleRT[10]=(double)YearMonth;//年
    angleRT[11]=(double)rev[6];//月
    angleRT[12]=(double)rev[7];//日
    angleRT[13]=(double)rev[8];//时
    angleRT[14]=(double)rev[9];//分
    angleRT[15]=(double)rev[10];//秒

    return angleRT;

}

using namespace std;

int main() 
{
    // AA 55 AD 02 BC 08 01 06 08 00 00 08 33 D6 42 F0 97 EF 41 24 18 B7 43 EF 69 56 43 00 00 50 41 A8 02 00 00 01 EF
    // 假如test = [AA 55 AD 02 BC 08 01 06 08 00 00 08 33 D6 42 F0 97 EF 41 24 18 B7 43 EF 69 56 43 00 00 50 41 A8 02 00 00 01 EF]
    // cout  disp11(test)
    return 0;
}

功能函数我按照逻辑写出来了,但是我不知道如何运行它,也不知道如何添加头文件让他可以运行,测试数据在注释第一行,,按照函数的入口类型定义后传给函数,最后打印函数返回值

代码调了一下,可以运行了。

这是运行结果:

img

代码如下:


#include <iostream>

double *  disp11(unsigned char *rev)
{
    /*
    *
    */
    union gyro
    {
        char ch[4];
        float f;
        int si;
    };
    union gyro Gyrox[4], Gyroy[4], Gyroz[4];
    unsigned short int data_temp1;
    int  i, j;
    double* angleRT = new double[16];
    unsigned short int YearMonth;     //年
    unsigned short int Product_ID_T; //产品编号

    i = 2;
    Product_ID_T = rev[2] + rev[3] * 256; //产品编号
    YearMonth = rev[4] + rev[5] * 256;      //年

    i = 11;
    j = 0;
    Gyrox[0].ch[0] = rev[i++]; //经度
    Gyrox[0].ch[1] = rev[i++];
    Gyrox[0].ch[2] = rev[i++];
    Gyrox[0].ch[3] = rev[i++];
    angleRT[0] = Gyrox[0].f;


    i = 15;
    j = 0;
    Gyrox[0].ch[j++] = rev[i++]; //纬度
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    angleRT[1] = Gyrox[0].f;
    i = 19;
    j = 0;
    Gyrox[0].ch[j++] = rev[i++]; //高度,m
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    angleRT[2] = Gyrox[0].f;

    i = 23;
    j = 0;
    Gyrox[0].ch[j++] = rev[i++]; //航向
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    angleRT[3] = Gyrox[0].f;

    i = 27;
    j = 0;
    Gyrox[0].ch[j++] = rev[i++]; //步数
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    angleRT[4] = Gyrox[0].f;

    //步幅度,低字节
    data_temp1 = rev[32] * 256 + rev[31];
    angleRT[5] = (double)data_temp1;

    angleRT[6] = (double)rev[33]; //卫星数
    angleRT[7] = (double)rev[34]; //状态字1
    angleRT[8] = (double)rev[35]; //状态字2
    angleRT[9] = (double)Product_ID_T; //状态字2


    angleRT[10] = (double)YearMonth;//年
    angleRT[11] = (double)rev[6];//月
    angleRT[12] = (double)rev[7];//日
    angleRT[13] = (double)rev[8];//时
    angleRT[14] = (double)rev[9];//分
    angleRT[15] = (double)rev[10];//秒

    return angleRT;

}

using namespace std;

int main()
{
    // AA 55 AD 02 BC 08 01 06 08 00 00 08 33 D6 42 F0 97 EF 41 24 18 B7 43 EF 69 56 43 00 00 50 41 A8 02 00 00 01 EF
    // 假如test = [AA 55 AD 02 BC 08 01 06 08 00 00 08 33 D6 42 F0 97 EF 41 24 18 B7 43 EF 69 56 43 00 00 50 41 A8 02 00 00 01 EF]
    unsigned char test[] = { 0xAA, 0x55, 0xAD, 0x02, 0xBC, 0x08, 0x01, 0x06, 0x08, 0x00, 0x00, 0x08, 0x33, 0xD6, 0x42, 0xF0, 0x97, 0xEF, 0x41, 0x24, 0x18, 0xB7, 0x43, 0xEF, 0x69, 0x56, 0x43, 0x00, 0x00, 0x50, 0x41, 0xA8, 0x02, 0x00, 0x00, 0x01, 0xEF };
    // cout  disp11(test)
    double* angleRT = disp11(test);
    printf("%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f\n", angleRT[0], angleRT[1], angleRT[2], angleRT[3], 
        angleRT[4], angleRT[5], angleRT[6], angleRT[7], angleRT[8], angleRT[9], angleRT[10], angleRT[11], angleRT[12], angleRT[13], angleRT[14], angleRT[15]);
    delete[] angleRT;

    system("pause");

    return 0;
}

我需要的效果修改这个函数或者这个代码,让其能够运行,disp11函数不能动.其他的都可以动,如果头文件有错误可以修改.最后我下班后没有c++运行环境,提交回答的时候需要附上运行截图.谢谢

如果不报错的话把头文件改成#include<bits/stdc++.h>

angleRT是固定长度吗?
如果固定长16的话试试这样:


#include <iostream>
#include<string>

using namespace std;

double * disp11(string rev)

{

    /*

    *

    */

    union gyro

    {

        char ch[4];

        float f;

        int si;

    };

    union gyro Gyrox[4], Gyroy[4], Gyroz[4];

    unsigned short int data_temp1;

    int  i, j;

    double angleRT[16];

    unsigned short int YearMonth;     //年

    unsigned short int Product_ID_T; //产品编号



    i = 2;

    Product_ID_T = rev[2] + rev[3] * 256; //产品编号

    YearMonth = rev[4] + rev[5] * 256;      //年



    i = 11;

    j = 0;

    Gyrox[0].ch[0] = rev[i++]; //经度

    Gyrox[0].ch[1] = rev[i++];

    Gyrox[0].ch[2] = rev[i++];

    Gyrox[0].ch[3] = rev[i++];

    angleRT[0] = Gyrox[0].f;





    i = 15;

    j = 0;

    Gyrox[0].ch[j++] = rev[i++]; //纬度

    Gyrox[0].ch[j++] = rev[i++];

    Gyrox[0].ch[j++] = rev[i++];

    Gyrox[0].ch[j++] = rev[i++];

    angleRT[1] = Gyrox[0].f;

    i = 19;

    j = 0;

    Gyrox[0].ch[j++] = rev[i++]; //高度,m

    Gyrox[0].ch[j++] = rev[i++];

    Gyrox[0].ch[j++] = rev[i++];

    Gyrox[0].ch[j++] = rev[i++];

    angleRT[2] = Gyrox[0].f;



    i = 23;

    j = 0;

    Gyrox[0].ch[j++] = rev[i++]; //航向

    Gyrox[0].ch[j++] = rev[i++];

    Gyrox[0].ch[j++] = rev[i++];

    Gyrox[0].ch[j++] = rev[i++];

    angleRT[3] = Gyrox[0].f;



    i = 27;

    j = 0;

    Gyrox[0].ch[j++] = rev[i++]; //步数

    Gyrox[0].ch[j++] = rev[i++];

    Gyrox[0].ch[j++] = rev[i++];

    Gyrox[0].ch[j++] = rev[i++];

    angleRT[4] = Gyrox[0].f;



    //步幅度,低字节

    data_temp1 = rev[32] * 256 + rev[31];

    angleRT[5] = (double)data_temp1;



    angleRT[6] = (double)rev[33]; //卫星数

    angleRT[7] = (double)rev[34]; //状态字1

    angleRT[8] = (double)rev[35]; //状态字2

    angleRT[9] = (double)Product_ID_T; //状态字2





    angleRT[10] = (double)YearMonth;//年

    angleRT[11] = (double)rev[6];//月

    angleRT[12] = (double)rev[7];//日

    angleRT[13] = (double)rev[8];//时

    angleRT[14] = (double)rev[9];//分

    angleRT[15] = (double)rev[10];//秒



    return angleRT;



}



using namespace std;



int main()

{

    // AA 55 AD 02 BC 08 01 06 08 00 00 08 33 D6 42 F0 97 EF 41 24 18 B7 43 EF 69 56 43 00 00 50 41 A8 02 00 00 01 EF

    // 假如test = [AA 55 AD 02 BC 08 01 06 08 00 00 08 33 D6 42 F0 97 EF 41 24 18 B7 43 EF 69 56 43 00 00 50 41 A8 02 00 00 01 EF]

    // cout  disp11(test)

    string rev = "AA55AD02BC0801060800000833D642F097EF412418B743EF69564300005041A802000001EF";

    double *test = disp11(rev);

    for (size_t i = 0; i < 16; ++i) {
        cout << test[i] << " ";
    }
    cout << endl;

    system("pause");
    return 0;

}

img