在下面的代码中,当函数print_uart传输字符串" Hello world"什么是完全收到* s?是字符H还是字符串" Hello World"存储??
volatile unsigned int * const UART0DR = (unsigned int *)0x101f1000;
void print_uart0(const char *s)
{
while(*s != '\0')
{ /* Loop until end of string */
*UART0DR = (unsigned int)(*s); /* Transmit char */
s++; /* Next char */
}
}
void c_entry()
{
print_uart0("Hello world!\n");
}
答案 0 :(得分:1)
s
是指向存储字符串“Hello World”的内存的指针
*s
是第一个字符'H'
。
答案 1 :(得分:0)
编译器获取所有字符串常量并为它们分配内存。在s
中,您在内存中存放了一个存储位置,*s
您将获得该字符串的第一个字符。
同样重要的是要注意,使用完全相同的字符串常量可能会指向内存中的相同位置 - >这样的优化可以节省一些内存。
答案 2 :(得分:0)
参数s指向字符串文字的第一个字符" Hello world!\ n"。默认情况下,字符串以\ 0结尾 所以while循环
))(connect=port))
将H,e,...一个字符复制到同一地址' UART0DR'