我刚接触C语言并正在了解指针。所以,我不明白如何通过指针获取整个字符串。如果指针只包含字符串中的第一个字符的地址,那么它如何返回整个字符串呢?
假设我们有这样的代码:
字符串:T e s t \0
地址:100 101 102 103 104
所以,如果我没弄错,
那么当我们执行
它是否扫描地址直到遇到
假设我们有这样的代码:
char *s = "Test";
因为它只是一个字符数组,所以它在内存中的位置如下:字符串:T e s t \0
地址:100 101 102 103 104
所以,如果我没弄错,
*s
将保存100
(第一个字符T
的地址)。那么当我们执行
printf(s);
时,为什么会在输出中得到整个字符串Test
呢?它是否扫描地址直到遇到
\0
,还是执行其他操作?
char *
指向单个字符,而不是字符串。然后可以找到字符串的其他字符,因为我们知道字符串中的字符占据连续的内存位置。 - M.Mchar *s = "Test"; printf(s);
printf内部的大致过程如下:while(*s!= '\0') {
printf("%c", *s); s++;
}
- Coffemanzputs
;因为printf
还必须检查字符串中的%
符号。 - M.M