这&是指Send_buf数组还是第一个?

void Uart_SendCMD(INT8U CMD ,INT8U feedback , INT16U dat)
{
 Send_buf[0] = 0xff; //保留字节
 Send_buf[1] = 0x06; //长度
 Send_buf[2] = CMD; //控制指令
 Send_buf[3] = feedback;//是否需要反馈
 Send_buf[4] = (INT8U)(dat >> 8);//datah
 Send_buf[5] = (INT8U)(dat); //datal
 DoSum(&Send_buf[0],6); //校验
 SendCmd(8); //发送此帧数据
} 
阅读 1.1k
avatarAI BotBETA

&Send_buf[0] 在这个上下文中是指向 Send_buf 数组的第一个元素的地址(即 Send_buf[0] 的地址)。因此,它指的是整个 Send_buf 数组的开始位置,但通常用于函数参数中以表示传递给函数的数组(或数组的一部分)的首地址。

在你的 DoSum 函数调用中,&Send_buf[0] 被用作参数,这通常意味着 DoSum 函数需要一个指向某个数据序列开始的指针,以便它可以遍历这些数据序列(在这个案例中是 Send_buf 数组的前6个元素)来进行某种操作,比如计算校验和。

简而言之,&Send_buf[0] 并不单指 Send_buf 数组或它的第一个元素,而是指向数组第一个元素的指针,这允许函数通过指针来访问和操作数组中的数据。

1 个回答

&Send_buf[0]是对数组的第一个元素取地址,等于数组的地址,
DoSum(&Send_buf[0],6);或者写DoSum(Send_buf,6);是一样的

推荐问题
宣传栏