【二级指针】--应用案例

#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)

     。。。。

这就是一个应用案例

猜你喜欢

转载自blog.csdn.net/weixin_42381351/article/details/89918706