循环中的return语句有什么作用?

时间:2015-07-03 04:35:52

标签: c

在下面的代码中,str_replace_all会将所有oldc替换为newcstr_replace_first仅应将oldc的第一次出现替换为newc

因此str_replace_all循环播放,它会将所有oldc替换为newc,这很容易理解。在第二个函数str_replace_first中,代码是相同的,除了查找和替换char之后的return 1。我并不完全理解return 1在这种情况下的作用。从我的理解和#34;休息"循环?我希望有人可以给我一个关于它如何仅取代第一次出现的解释。

size_t str_replace_all(char s[], int oldc, int newc)
{
    size_t i;
    size_t count = 0;

    for (i=0; s[i]!='\0'; i++)
    {
        if (s[i] == (char)oldc)
        {
            s[i] = (char)newc;
            count++;
        }
    }
    return count; 
}


int str_replace_first(char s[], int oldc, int newc)
{

    size_t i;

    for (i=0; s[i]!='\0'; i++)
    {
        if (s[i] == (char)oldc)
        {
            s[i] = (char)newc; 
            return 1; /* What exactly does this do? */
        }
    }
        return 0; 
}

2 个答案:

答案 0 :(得分:1)

return 1转义函数并将1返回给调用它的任何函数。 return在调用时会有效地转义任何函数,这可以在许多应用程序中用于在函数完成之前退出函数。

在这种情况下:

int str_replace_first(char s[], int oldc, int newc)
{

    size_t i;

    for (i=0; s[i]!='\0'; i++)
    {
        if (s[i] == (char)oldc)
        {
            s[i] = (char)newc; 
            return 1; /* What exactly does this do? */
        }
    }
        return 0; 
}

循环继续,直到找到与oldc匹配的字符,然后用newc替换它,然后立即退出再继续。因此,一旦找到匹配,它将替换它然后退出。

答案 1 :(得分:0)

此处str_replace_first何时

s[i] == (char)oldc

条件在循环中变为true,然后该字符(旧字符)被新字符替换。然后return 1将控制权返回给调用函数,值为1.(即循环和函数都不再继续)。

1返回以标记仅替换了1个字符。