【发布时间】:2018-11-19 19:43:51
【问题描述】:
无法了解具有此头部的方法:char * strcpy (char *cad1, const char *cad2),在此示例中在 C 中工作:
'char * strcpy (char *cad1, const char *cad2){
char *aux = cad1;
for( ; *cad1++ = *cad2++; );
return cad1;
}'
【问题讨论】:
-
嗨@LauraCooper,欢迎来到 StackOverflow。您可以查看how to ask 来改进这个问题和未来的问题。特别是,您应该提供一些研究工作来探索您已经尝试过自己解决问题。特别是这不是要求“请解释此代码” 的网站。 See here for more information.
-
不管怎样,我的 C 已经生锈了,但基本上这个函数所做的就是将
cad2的内容复制到cad1并返回一个指向cad1的指针。它通过 char 迭代cad2char 并将它们分配给cad1来工作。直到cad2结束(在\0),这才打破循环。这个解释非常模糊,更熟悉 C 的人可以给出更好的解释。 (另请注意,这不是复制的安全实现,因为cad2可能比原始cad1大得多,然后覆盖它之外的内存,可能已经分配。) -
我认为这里的返回值是错误的。
-
@johnathan:
(*cad1++ = *cad2++)表达式的值实际上是增量之前的*cad2。我相信你的建议不会写空终止字符。
标签: strcpy