请问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]前面要加 &,谢谢
展开
2个回答
展开全部
首先,&是取地址
根据设定,com_tx_buff应该是一个数组
直接调用com_tx_buff得到的是这个数组的首地址,就是&com_tx_buff[0]
&com_rx_buff[HEAD_COMMAND_LEN]是数组第(HEAD_COMMAND_LEN+1)个元素的地址
根据设定,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
展开全部
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)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询