当前位置: 首页 > 知识库问答 >
问题:

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

单于正业
2024-09-17
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个答案

顾炎彬
2024-09-17

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

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

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

 类似资料:
  • 问题内容: 对于长数据类型,我可以在L后面加上数字以使编译器知道它长。字节和短怎么样? 作为动机,以下产生类型不匹配错误: 问题答案: 您实际上在谈论的是整数 文字 ()与长 文字 ()。实际上,在Java中没有短或字节字面量。但它 通常 并不重要,因为从整数常量的类型的隐式转换,和。从而: 仅当文字在所需范围内时,才允许隐式转换。如果不是,则需要类型转换。例如 在其他情况下,需要显式转换;例如,

  • 我对从我的组件调用异步操作有问题,我想我做了工作所需的一切,但似乎没有,我使用了: 将调度映射到属性 在里面我回来了 操作:bindActionCreators(fetchPosts,调度) 我把它连接起来。 在所有这些事情之后,我试着在我的组件中调用这个动作- this . props . actions . fetch post() 结果我在控制台中收到这个错误- this.props.act

  • 我正在用MPI编写Mergesort来对整数数组进行排序。其想法是将数组的左半部分合并到同一列,同时将数组的右半部分发送到子列。因此,如果有四个过程,看起来像这样: 父级总是将数组的未排序的右半部分发送给右子级,从右子级接收排序后的子数组。 在串行合并排序算法中,子阵列的排序可以在整个阵列的相同地址上进行,而不需要生成临时阵列。使用和的MPI实现是否可以应用相同的方法?我的理解是发送子阵列的第一个

  • 在 C 中实现回调函数时,我是否仍应使用 C 样式函数指针: 或者我应该使用std::函数:

  • 我保证这个问题以前被问过,但是我没有能够通过搜索找到它;对于任何冗余,请提前道歉。 我的理解(可能是错误的)是,只有在编译时知道对象的大小时,才能分配给堆栈。因此,在初始化数组的情况下,可以执行以下操作之一(这应该放在堆栈上): 由于这个数组的大小在编译时是已知的,所以这应该没有问题。 另一方面,这(我相信)也是有效的代码: 这也会被放在堆栈上吗?我很确定如果你释放()这个,代码会出错,所以我认为

  • 我很难确定这到底是什么。此时,我已经熟悉了方法、构造函数和类声明的样子。这是哪个?为什么它看起来像一个构造函数和一个方法有一个婴儿?

  • 我不知道如何创建一个字符数组,更糟糕的是,一个作为“扫描器”(System.in)的数组。我会解释: 我想输入一个名字,并从每个字母中接收(输出)等效的数字。但是我不知道怎么做。例如: 但我不希望有一个整数,我希望每个数都是一个完全独立的索引,因为我要“算名字”。 下面是我在没有扫描仪的情况下尝试的一个例子: 9数组的每个索引都是一个有3个字母的字符数组。也许我的想法完全错误。 非常感谢大家的关注