终身价值

pre*_*uin 2 c c++

我对myname数组的生命周期感到困惑,它是否仍然存在于if语句之外?我们在c和c ++中得到了相同的答案吗?

int main (int argc, char* argv[])
{
    char* host;

    if (1 == argc)
    {
/*code below is copied from a book*/
        char myname[256];
        gethostname(myname, 255);
        host = myname;
/*code above is copied from a book*/
    }

    else
    {
        /*        */
    }
    printf("%s\n",host);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

代码片段来自本书Begining Linux Programming 4th edition,第15章:套接字,我很抱歉作者犯了这样的错误.但是我认为这本书很好,不包括这段代码.

bil*_*llz 7

myname 数组的生命周期[;]它是否仍然存在于if语句中?

没有

Do we get the same answer in C and C++?
Run Code Online (Sandbox Code Playgroud)

它是丑陋的,糟糕的代码,有UB,std::string用于host