void s1(char dest[], char src[])
{
int i=0;
while(dest[i++]=src[i++]);
}
void s2(char * dest, char *src)
{
while(*dest++=*src++);
}
另外注意,这个问题我是从书上拿来的,不知道代码对不对(我觉得while循环里应该有两个'=')
最佳答案
第二个代码执行字符串复制。它等同于 strcpy()
。
第一个代码具有未定义的行为,因为它在一条语句中更新了两次 i
,而没有插入序列点。
所以答案是它们不一样。
第一个代码可以更正。例如像这样:
void s1(char dest[], char src[])
{
int i=0;
while(dest[i]=src[i]) i++;
}
关于c - 以下两个函数是否等价?如果不是,为什么不呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42072157/