![](/img/trans.png)
[英]function pointer prototype which takes three integer pointers as arguments and returns character pointer
[英]Function with character pointer as arguments
在下面的代碼中,當函數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");
}
s
是指向存儲字符串“ Hello World”的內存的指針。
*s
是第一個字符'H'
。
編譯器將獲取所有字符串常量並為其分配內存。 在s
您在內存中有一個存儲它的位置,到*s
您將獲得此字符串的第一個字符。
還需要注意的是,使用完全相同的字符串常量可能會指向內存中的同一位置->這樣的優化可以節省一些內存。
參數s指向字符串文字“ Hello world!\\ n”的第一個字符。 默認情況下,字符串以\\ 0終止,因此while循環
while(*s != '\0')
{ /* Loop until end of string */
*UART0DR = (unsigned int)(*s); /* Transmit char */
s++; /* Next char */
}
一次將一個字符H,e,...復制到相同的地址'UART0DR'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.