问一段C语言中的位运算函数的意义

// 计算给定长度数据的 16 位 CRC。 

U16 GetCrc16(const U8* pData, int nLength) { 
    U16 fcs = 0xffff; // 初始化 
    while(nLength>0){ 
        fcs = (fcs >> 8) ^ crctab16[(fcs ^ *pData) & 0xff]; 
        nLength--; 
        pData++; 
    } 
    return ~fcs; // 取反 
}

其中的U8* pData和函数中的*pData是什么意思

转写成php (fcs ^ *pData)该怎么写

谢谢 百度了好久都没明白星号pData的意义

阅读 2.5k
2 个回答

星号*不是位运算符,是C中的指针符号,在PHP中没有指针,所以也就没有想对应的操作。不过这段代码里,只是使用*来取指针的值,在你转化到PHP代码时,直接将指针忽略,采用对应的变量即可。

pData是变量地址,一个uint8变量的地址,函数里*pData是取这个地址处变量的值。如此,经过函数处理,传入的参数值是有可能被修改的。PHP里忽略的话,传值和传址可能不一样。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏