C 符号是什么->;在一行代码中实现?
符号->出现在我试图理解的代码行中,有人告诉我这是一个指针C 符号是什么->;在一行代码中实现?,c,pointers,fifo,C,Pointers,Fifo,符号->出现在我试图理解的代码行中,有人告诉我这是一个指针 *data = (uint8_t)base->FIFORD; 我的解释是,8位整数指针基址指向一个名为FIFORD的寄存器。然后将FIFORD中的值分配给指针数据。这是正确的吗 额外好处:如果我想将来自FIFORD的值存储在缓冲区中打印,我需要做什么 多谢 在您的示例中,“base”是指向结构的指针 有两种方法可以使用指针(基)访问结构中的变量: (*base).FIFORD base->FIFORD 两者都做同样的事
*data = (uint8_t)base->FIFORD;
我的解释是,8位整数指针基址指向一个名为FIFORD的寄存器。然后将FIFORD中的值分配给指针数据。这是正确的吗
额外好处:如果我想将来自FIFORD的值存储在缓冲区中打印,我需要做什么
多谢 在您的示例中,“base”是指向结构的指针
有两种方法可以使用指针(基)访问结构中的变量:
(*base).FIFORD
base->FIFORD
base
是指向数据结构的指针。数据结构仅仅意味着它只是一组变量。它们作为一个组存储,因为它们有很强的相关性。代码中的其他地方base
被创建为类型为“X”的数据结构。甚至在此之前,还会有一个关于该类型外观的定义(至少这个定义会说X包含一个始终称为FIFORD
)的变量。我们知道
base
是一个指针,因为有箭头。如果是数据结构本身,代码将变成*data=(uint8_t)base.FIFORD代码>
FIFORD
是数据结构中base
指向的变量。代码没有提到类型是什么,但我们知道的是它可能是一个数字
(uint8\u t)
将其类型更改为uint8\u t
(通常用于保存自然数)
数据
是指针。我们之所以知道这一点,是因为*
-符号*data=
表示“内存中数据
指向的位置应设置为`
不要更改
数据
指向的位置,而是将该位置的值更改为uint_8t
数据结构中FIFORD
变量值的转换,该变量保存在base
指向的位置
注:原来的五字永不会改变
关于“奖金”问题,我不太理解你的问题,因为这个值已经存储在内存中了。(即使在这一行之后也有两次)。您可以使用printf函数来打印它。
类似于
printf(“数据的当前值:%ui\n”,*数据)代码>应该可以做到这一点。谢谢您的帮助!对于奖金问题,我试图找到一种方法,使用UART通信协议将键盘输入发送到终端窗口,而不使用printf。我使用的是MCUXpresso IDE,printf是在控制台中打印语句,而不是在终端窗口中。我最终调用了IDE提供的USART_writeblock函数,IDE很好地打印了它。