Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是`&;变量=null;`可能的_C++_Pointers_Syntax - Fatal编程技术网

C++ 是`&;变量=null;`可能的

C++ 是`&;变量=null;`可能的,c++,pointers,syntax,C++,Pointers,Syntax,如果将指针设置为null,则该变量将被删除。它不能再使用,也不会占用您的存储空间。 指针的名称表示它的值。它的值总是&someVariable。 所以我可以这样做:&someVariable=null 当我写这个时,我对C++非常陌生,所以我有很多误解。 要删除指针,必须删除ptr而不是通过ptr=nullptr将其设置为null &someVariable是一个右值,因此它无法获得任何赋值 它是0,NULL或nullptr,而不是NULL 总之,您不应该delete&any,即使你很幸运并且它

如果将指针设置为null,则该变量将被删除。它不能再使用,也不会占用您的存储空间。 指针的名称表示它的值。它的值总是
&someVariable
。 所以我可以这样做:
&someVariable=null

当我写这个时,我对C++非常陌生,所以我有很多误解。 要删除指针,必须
删除ptr
而不是通过
ptr=nullptr将其设置为null

&someVariable
是一个右值,因此它无法获得任何赋值

它是
0
NULL
nullptr
,而不是
NULL


总之,您不应该
delete&any,即使你很幸运并且它可以编译。只需删除分配
任何内容时得到的指针

不,您不能
&someVariable
是一个右值。它无法分配给任何人,尝试也毫无意义

此外,你想做什么的想法是毫无意义的。函数变量在堆栈上分配,只有在函数返回时才释放。无法释放全局变量。如果堆不能以这种方式工作,则无法释放已分配结构中的变量

变量不会被删除。这是毫无意义的。内存的释放取决于其分配方式:

  • 关于堆栈->函数返回
  • 分配有
    new
    ->
    delete
    auto_ptr
    或其他智能指针(调用
    delete
  • 分配了
    malloc
    ->
    免费
  • 全局变量->进程退出
如果将指针设置为null,则该变量将被删除

不,不是

它不能再使用,也不会占用您的存储空间

事实并非如此

所以我可以这样做:
&someVariable=null

不可以。即使您编写了
nullptr
,而不是不存在的
null
,并且即使您可以修改内置类型的右值,它也只会将一些临时指针的值设置为
nullptr

修改指针对它所指向的对象绝对没有影响。


听起来您对
delete
和将指针设置为null感到困惑。

您尝试过吗?不需要超过5分钟来抽出一些示例代码:“如果你设置一个指针为NULL,变量被删除”-不,C++中没有删除任何东西,如果你给NulLi设置一个指针,询问谷歌,但是忘记尝试。那么如何删除变量呢?SoloLearn告诉我必须将指针设置为null。那个应用程序必须由一个醉醺醺的泰迪熊编写。我不知道SoloLearn是什么,但是不要尝试从你手机上的随机应用程序中学习C++。获取。不,不是教程。一本书。一本合适的纸质书。我想你的意思是它是一个prvalue。那么指针只对全局变量有效吗?@JamesRoot:原来我是指rvalue(现在讨论细微差别毫无意义。@TimonPaßlick:指针对任何变量都很有效。“变量不会被删除。这是毫无意义的。”不,不是。Placement和non-Placement new/delete清楚地表明了这一点,当语言不适合你时,你可以控制对象的生存期。那么重载的
操作符(&()
?@πάντα呢ῥεῖ: 您不能在内置类型上重载
运算符&
。问题中哪里提到
someVariable
是内置类型?@πάνταῥεῖ: 事实并非如此;相反,这是我回答的特定部分的前提。有可能创造出一个异常复杂的设计,以某种方式让给定的陈述产生预期的效果。但是,我有理由相信,在这种情况下,我们可以排除这种可能性。