小代码

------常常因为自己不够优秀而感到恐慌~

记录两个简单易忘的代码:

1. 如何使用new/delete分配二维数组

当然也可以用malloc和vector。

#include <iostream>
using namespace std;

int main() {
    int nrows=3,ncolumns=4;
    int **parr2D = new int*[nrows];
    
    for(int i=0;i<nrows;++i)
    {
        parr2D[i]=new int[ncolumns];
    }
    
    int k = 0;
    for (int m=0;m<nrows;m++)
    {
        for (int n=0;n<ncolumns;n++)
        {
            parr2D[m][n]=k++;
            cout<<parr2D[m][n]<<" ";
        }
        cout<<endl;
    }
    
    for(int i=0;i<nrows;++i)
    {
        delete parr2D[i];
    }
    
    delete []parr2D;
    parr2D = NULL;
    
    cout<<endl;
    return 0;
}

2. 数据的简单封包解包示例

#include <stdio.h>
#include <string.h>

typedef char                s8;
typedef unsigned char       u8;
typedef short               s16;
typedef unsigned short      u16;
typedef int                 s32;
typedef unsigned    int     u32;
typedef float               f32;
typedef signed long long    s64;
typedef unsigned long long  u64;

int main() {
    const int N = 12;
    u8 send_buf[N];

   
    send_buf[0] = 0x7e; //帧头2字节
    send_buf[1] = 0x7e;
    send_buf[2] = 0x16; //整包长度,4字节
    *(u16 *)(&send_buf[6]) = 0x0029;      //源地址 2字节
    *(u16 *)(&send_buf[8]) = 0x0085;      //目的地址2字节
    send_buf[10] = 0x0D;
    send_buf[11] = 0x0A;
    
    u8 recv_buf[N]; //包头+数据长度
    memcpy(recv_buf,send_buf,sizeof(u8)*N);
    
    u16 head = *(u16*)(&recv_buf[0]);
    u32 headLen = *(u16*)(&recv_buf[2]);
    u16 srcAddr = *(u16*)(&recv_buf[6]);
    u32 dstAddr =  *(u16*)(&recv_buf[8]);
    u8 tail1 = *(u8*)(&recv_buf[10]);
    u8 tail2 = *(u8*)(&recv_buf[11]);
    
    
    printf("head:%x
",head);
    printf("headLen:%x
",headLen);
    printf("srcAddr:%x
",srcAddr);
    printf("dstAddr:%x
",dstAddr);
    printf("tail1:%x
",tail1);
    printf("tail2:%x
",tail2);
    
    return 0;
}
原文地址:https://www.cnblogs.com/shuqingstudy/p/10289703.html