我对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章:套接字,我很抱歉作者犯了这样的错误.但是我认为这本书很好,不包括这段代码.
myname数组的生命周期[;]它是否仍然存在于if语句中?
没有
Do we get the same answer in C and C++?
Run Code Online (Sandbox Code Playgroud)
是
它是丑陋的,糟糕的代码,有UB,std::string用于host