#define set(pDest,len,bit) (((UCHAR *)(pDest))[((len)-1)-(bit)/8] |= (UCHAR)(1UL<<((bit)%8)))这里,指针被强转为((UCHAR *)后,接上数组下标,是指这个是一个数组指针吗?

解决方案 »

  1.   

    有点复杂啊,
    这里,指针被强转为((UCHAR *)后,接上数组下标,是指这个是一个数组指针吗?
    pDest被强制转换成UCHAR *指针后,通过数组下标来访问
      

  2.   

    否。这实际上相当于:SomeType *pDest; // 例如 void *pDest;
    UCHAR *puc = (UCHAR *)pDest;
    puc[len - 1 - bit/8] |= (UCHAR)(1UL<<(bit % 8)));这么写你就明白了吧?
      

  3.   

    这个宏的含义应该是:将pDest指向的缓冲区(长度为len个字节)的倒数(从最末尾开始往前数)第bit位置为1(设最末尾的一个字节的最低位为第0位)。