------常常因为自己不够优秀而感到恐慌~
记录两个简单易忘的代码:
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\n",head); printf("headLen:%x\n",headLen); printf("srcAddr:%x\n",srcAddr); printf("dstAddr:%x\n",dstAddr); printf("tail1:%x\n",tail1); printf("tail2:%x\n",tail2); return 0; }