【发布时间】:2016-10-18 10:26:12
【问题描述】:
这里是strCopy的一个实现
void strcopy2(char *dst, char const *src){
while ((*dst++ = *src++))
;
}
我们的教授要求我们在不使用指针的情况下重现这段代码,所以我想出了以下函数:
void strcopy(char dst[], char const src[]){
size_t i = 0;
while (dst[i] = src[i++])
;
}
它运行良好,但我意识到,在底层函数必须仍然使用指针,因为我们无处返回任何值。换句话说,我虽然最后一个函数会使用按值传递,但显然不是这样。那么在水下发生了什么,这两种方法实际上有什么区别吗?
【问题讨论】:
-
这里有一些关于为什么指针和数组不是一回事的背景知识cplusplus.com/forum/articles/9
-
此代码 `while (dst[i] = src[i++]) ;` 具有未定义的行为:
i的两个增量,没有中间序列点。将其更改为 `while (dst[i] = src[i]) i++;`.
标签: c++