Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 符号是什么->;在一行代码中实现?_C_Pointers_Fifo - Fatal编程技术网

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
  • 两者都做同样的事情

    在这种情况下,将提取结构中的FIFORD变量,将其转换为uint8_t,并将其分配给一个称为数据的uint8_t指针(上下文太少了)
  • 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很好地打印了它。