符号 -> 在一行代码中实现了什么?
What do the symbols -> achieve in a line of code?
符号 -> 出现在我试图理解的一行代码中,有人告诉我这是一个指针。
*data = (uint8_t)base->FIFORD;
我的解释是8位整数指针基指向一个叫FIFORD的寄存器。然后将 FIFORD 中的值分配给指针数据。这是正确的吗?
奖励:如果我想将 FIFORD 的值存储在缓冲区中以进行打印,我需要做什么?
非常感谢!
在您的示例中,“base”是指向结构的指针。
有两种方法可以使用指针(基数)访问结构中的变量:
(*base).FIFORD
base -> FIFORD
两者做同样的事情
在这种情况下,结构中的 FIFORD 变量被提取,转换为 uint8_t 并分配给一个,希望(上下文太少说),uint8_t 指针称为数据。
base
是指向数据结构的指针。数据结构只是意味着它只是一组变量。它们被存储为一个组,因为它们具有很强的相关性。您代码中的其他地方 base
被创建为“X”类型的数据结构。甚至在此之前,就会有一个关于这个类型应该是什么样子的定义(至少这个定义会说 X 包含一个总是叫做 FIFORD
的变量)。
我们知道base
是一个指针,因为有箭头。如果它是数据结构本身,代码将变为 *data = (uint8_t) base.FIFORD;
FIFORD
是base
指向的数据结构中的一个变量。代码没有提到类型是什么,但我们所知道的是它可能是一个数字。
我们知道它可能是一个数字,因为我们使用(uint8_t)
将它的类型更改为uint8_t
(通常用于保存自然数)
data
是指针。我们知道这一点是因为 *
符号。 *data =
表示“data
指向的内存位置应该设置为...`
所以这一行的完整含义:
不要更改 data
指向的位置,而是将该位置的值更改为保存在该位置的数据结构中的 FIFORD
变量值的 uint_8t
转换其中 base
指向。
PS:原来的FIFORD
永远不变。
关于“奖金”问题,我不太理解你的问题,因为该值已经存储在内存中。 (甚至在此行之后两次)。您可以只使用 printf 函数来打印它。
像 printf("Current value of data: %ui\n", *data);
这样的东西应该可以解决问题。
符号 -> 出现在我试图理解的一行代码中,有人告诉我这是一个指针。
*data = (uint8_t)base->FIFORD;
我的解释是8位整数指针基指向一个叫FIFORD的寄存器。然后将 FIFORD 中的值分配给指针数据。这是正确的吗?
奖励:如果我想将 FIFORD 的值存储在缓冲区中以进行打印,我需要做什么?
非常感谢!
在您的示例中,“base”是指向结构的指针。
有两种方法可以使用指针(基数)访问结构中的变量:
(*base).FIFORD
base -> FIFORD
两者做同样的事情
在这种情况下,结构中的 FIFORD 变量被提取,转换为 uint8_t 并分配给一个,希望(上下文太少说),uint8_t 指针称为数据。
base
是指向数据结构的指针。数据结构只是意味着它只是一组变量。它们被存储为一个组,因为它们具有很强的相关性。您代码中的其他地方base
被创建为“X”类型的数据结构。甚至在此之前,就会有一个关于这个类型应该是什么样子的定义(至少这个定义会说 X 包含一个总是叫做FIFORD
的变量)。
我们知道base
是一个指针,因为有箭头。如果它是数据结构本身,代码将变为*data = (uint8_t) base.FIFORD;
FIFORD
是base
指向的数据结构中的一个变量。代码没有提到类型是什么,但我们所知道的是它可能是一个数字。我们知道它可能是一个数字,因为我们使用
(uint8_t)
将它的类型更改为uint8_t
(通常用于保存自然数)data
是指针。我们知道这一点是因为*
符号。*data =
表示“data
指向的内存位置应该设置为...`
所以这一行的完整含义:
不要更改 data
指向的位置,而是将该位置的值更改为保存在该位置的数据结构中的 FIFORD
变量值的 uint_8t
转换其中 base
指向。
PS:原来的FIFORD
永远不变。
关于“奖金”问题,我不太理解你的问题,因为该值已经存储在内存中。 (甚至在此行之后两次)。您可以只使用 printf 函数来打印它。
像 printf("Current value of data: %ui\n", *data);
这样的东西应该可以解决问题。