【发布时间】:2023-03-12 01:38:01
【问题描述】:
假设我有以下字符串:
char *my_string = "Stack";
据我所知char * 保存着字符串"Stack" 的第一个字符的内存地址。在计算机内存中它可能表示为:
------------------------
| S | t | a | c | k | \0|
------------------------
^
my_string
如果我调用:printf("%s\n", my_string);,则会打印整个字符串。编译器如何知道打印整个字符串?因为据我了解,它只有一个字符的地址。
【问题讨论】:
-
%s说:打印所有字符,直到找到'\0' -
编译器不会打印字符串,
printf会。它通过一次打印每个字符来做到这一点,直到它到达 NUL。很难看出您对此有何难处。 -
与您的地址识别整个房子的方式相同,而不仅仅是前门。
标签: c string pointers char char-pointer