请问if(memcmp(com_tx_buff,&com_rx_buff[HEAD_COMMAND_LEN],COMMAND_LEN) == 0)中的区别,谢谢

请问if(memcmp(com_tx_buff,&com_rx_buff[HEAD_COMMAND_LEN],COMMAND_LEN)==0)中的com_tx_buff和... 请问if(memcmp(com_tx_buff,&com_rx_buff[HEAD_COMMAND_LEN],COMMAND_LEN) == 0)中的com_tx_buff和&com_rx_buff[HEAD_COMMAND_LEN]的区别,他们不是同一个属性么?怎么&com_rx_buff[HEAD_COMMAND_LEN]前面要加 &,谢谢 展开
 我来答
dzmcobk
2014-05-27 · TA获得超过748个赞
知道小有建树答主
回答量:431
采纳率:76%
帮助的人:125万
展开全部
首先,&是取地址
根据设定,com_tx_buff应该是一个数组
直接调用com_tx_buff得到的是这个数组的首地址,就是&com_tx_buff[0]
&com_rx_buff[HEAD_COMMAND_LEN]是数组第(HEAD_COMMAND_LEN+1)个元素的地址
追问
请问那像这种if(memcmp(com_tx_buff,&com_rx_buff[8],2) == 0)?是什么意思呢?谢谢
追答
就是比较那个数组的(第一个第二个(从第一个开始,2(函数第三个参数)个数))和(第九个第十个)的值,如果是char型就比较ascii码大小,先比较第一个和第九个,如果相等就再比较第二个和第十个;如果第一个参数大于第二个参数,那返回一个大于0的值,等则返回0;小于就返回小于0的值,一般返回1,0,-1
oak_shield
2014-05-27 · TA获得超过201个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:188万
展开全部
com_rx_buff[HEAD_COMMAND_LEN] 和 *(com_rx_buff + HEAD_COMMAND_LEN)是一个意思,这是一个值,而不是一个指针

懂了吗?
更多追问追答
追问
你好,我还是没懂,你能细说下么?然后还有是&com_rx_buff[HEAD_COMMAND_LEN]我是这种形式的,谢谢
追答
com_tx_buff这是一个指针

com_rx_buff[HEAD_COMMAND_LEN]这是一个值
&com_rx_buff[HEAD_COMMAND_LEN]这是对值进行取地址操作,操作完了后得到对应值的指针

如果写成这样你是不是能理解?和你上面的代码是等效的

memcmp(com_tx_buff, com_rx_buff + HEAD_COMMAND_LEN, COMMAND_LEN)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式