指针刷新

BOM*_*MEz 0 c

我没有编程任何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循环的条件.我以为这些是等价的形式?第一个版本工作正常,但第二个版本返回空结果.我觉得我错过了一些明显的东西,但我无法发现它.

有人想告诉我一件我不知道的事吗?

Bet*_*eta 5

在第二个版本中,返回指向新数组末尾的指针.