【发布时间】:2015-04-24 20:07:27
【问题描述】:
我正在阅读 K&R,并且在字符指针部分感到有些困惑。 K&R 提供以下作为带有指针的 strcpy 版本:
void strcpy(char *s, char *t) {
while ( (*s = *t) != '\0') {
s++;
t++;
}
}
这与使用指向单个字符的指针有何不同?还是 C 只是相信我知道自己在做什么,并且两种情况都使用指向字符的指针?只是当我有一个这些字符的数组时,它被\0终止,而如果它只是一个字符,那么内存中的后续点可能是任何东西......对吗?
【问题讨论】:
-
在 C 中,指向单个
char的指针确实无法区分指向正确终止的chars 序列的指针,也就是字符串。艰难。 -
上面的
s和t确实是指向单个字符的指针。他们还会是什么?它们不是指向字符串的指针,因为 C 没有字符串。是的,如果你碰巧在内存中有一系列以 0 结尾的字符,我们可以用它们做一些类似字符串的事情。 -
两者相同。程序员应该识别它是一个字符还是一个字符串。如果将 char 指针(不是字符串)作为参数发送给字符串,程序将无法正常工作。 C 会将字符串识别为以 '/0' 字符结尾的字符内存位置集。
-
只是喜欢通俗的,通俗的说'C'数组其实是指针。好吧,正如我所展示的那样,这实际上根本不是真的。查看我的答案以获取更多信息。