我正在读一本由 Brian W. Kernighan 和 Dennis M. Ritchie 撰写的关于 c 编程语言的书。
这本书列出了下面的代码
void strcpy(char *s, char *t){
while((*s = *t) != '\0'){
s++;
t++;
}
}
并说:
因为参数是按值传递的,所以 strcpy 可以 以任何它喜欢的方式使用参数s和t
我不同意。为什么上述参数是按值传递的?
根据另一本书C如何编程:
在 C 中,您使用指针和间接运算符来模拟调用引用。当调用带有应该修改的参数的函数时,会传递参数的地址。
在后一种观点中,它绝对是引用调用。
请告诉我哪种方法是正确的,为什么,谢谢!
顺便说一句,分配后*s = *t
,与哪个比较'\0'
?*s
还是*t
?