创建这个系列,主要是想要记录在牛客网中遇到的一些问题,关于C和C++的问题。基本上都是一些零碎的知识点。我希望将其整理一下,形成一个系列。也希望在整理的过程中,进一步深入了解某些知识点。
例如下面的知识点:
char *getMemory()
{
char p[] = "hello";
return p;
}
void main()
{
char *str = nullptr;
str = getMemory();
cout<<str;
}
在上面这个问题中,str最后不会输出“hello”。这是因为在函数getMemory()中,p是一个字符数组,其作用域只是在函数内,当我们离开函数时,p就会自动销毁(因为p是存在栈空间中的)。
所以,我们在main函数中调用getMemory()函数时,str所指向的地址确实是p的地址,但是因为变量离开作用域而自行销毁,所以最终str中会没有值。