我没有编程任何C一段时间,并准备承担一个侧面项目我决定写一些基本的功能,让我的大脑回到思考C.其中一个我尝试的是基本的char数组复制功能:
char* mysteryFuncOne(char* in)
{
char* returnVal = malloc(sizeof(char) * strlen(in));
int i = 0;
while(*(returnVal+ i)= *(in+ i))
{
i++;
}
return returnVal;
}
Run Code Online (Sandbox Code Playgroud)
我上面的工作,但我试图进一步震撼我的记忆,我也认为这可行:
char* mysteryFuncOne(char* in)
{
char* returnVal = malloc(sizeof(char) * strlen(in));
while(*(returnVal++)= *(in++) ) // I changed this loop
{
}
return returnVal;
}
Run Code Online (Sandbox Code Playgroud)
基本上我改变了while循环的条件.我以为这些是等价的形式?第一个版本工作正常,但第二个版本返回空结果.我觉得我错过了一些明显的东西,但我无法发现它.
有人想告诉我一件我不知道的事吗?