#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <stdlib.h>//malloc
typedef unsigned int uint32_t ;
typedef unsigned short uint16_t ;
typedef unsigned char uint8_t ;
char readChar(unsigned char** pptr)
{
char c = **pptr;//参数可以理解:unsigned char (** pptr)
(*pptr)++;
return c;
}
int main(void)
{
unsigned char arr0[3]={8,5};
unsigned char *arrp=arr0;//数组变成指针了
char a=readChar(&arrp);//调用函数 向下2层 函数往上2层
printf("%d\n",a );//8
printf("%d--%d---%d\n",*arrp,arrp[0],*(arrp+1) );//5-5-0
//因为集体往后移动了一位!
return 1;
}
上面看到了 它的效果是自动+1
就好像你每次报文解析的时候 自己做i++
int MQTTDeserialize_subscribe(unsigned char* dup, unsigned short* packetid, int maxcount, int* count, MQTTString topicFilters[], int requestedQoSs[], unsigned char* buf, int buflen)
{
MQTTHeader header = {0};
unsigned char* curdata = buf;
unsigned char* enddata = NULL;
header.byte = readChar(&curdata);
if (header.bits.type != SUBSCRIBE)
。。。。
这就是一个应用案例