我正在阅读 Kernighan 和 Richie 的The C Programming Language中关于数组和指针的章节。
他们举了一个例子:
/* strlen: return length of string s */
int strlen(char *s)
{
int n;
for (n = 0; *s != '\0'; s++)
n++;
return n;
}
然后说:
“既然s
是指针,递增它是完全合法的;s++
对调用的函数中的字符串没有影响strlen
,而只是增加 strlen 的指针的私有副本。这意味着像
strlen("hello, world"); /* string constant */
strlen(array); /* char array[100]; */
strlen(ptr); /* char *ptr; */
一切正常。”</p>
除了第一个调用示例之外,我觉得我理解了所有这些:为什么或如何将字符串文字"hello, world"
视为char *s
? 这是一个怎样的指针?该函数是否将此字符串文字分配为其局部变量的值*s
,然后s
用作数组名称/指针?