在下面的代码中,行while ((uart[2] & (1<<6)) == 0);检查是否在硬件寄存器中设置了位。我的问题是-代码创建一个指针*uart,该指针指向地址0x00021000。如果要在(1 &,是否不必取消引用指针?#define UART_BASE 0x00021000void putstring(char *str) { volatile uint32_t *uart = (volatile uint32_t*) UART_BASE; while (1) { while (*str != '\0') { while ((uart[2] & (1<<6)) == 0); uart[1] = *str; str++; } }} 最佳答案 在C中,x[y]等效于*(x+y)。因此,您在执行uart[2]时将取消引用指针。关于c - 您不需要取消引用指针来对寄存器进行按位操作吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42694525/