【问题标题】:Pointers and cout address of a variable变量的指针和cout地址
【发布时间】:2016-08-25 18:59:50
【问题描述】:

我正在尝试计算变量 abc 的地址,但程序崩溃了

int main()
{
    int *app;
    int abc = 2;
    *app=3;
    cout << *app << endl << &*app << endl << abc;
    cout << &abc;

}

但是,如果我删除地址变量 int *app ,那么它将计算 abc 的地址

int main()
{
    int abc = 2;


    cout << &abc;

}

我不知道为什么另一个不相关的地址变量的存在会影响它。请指教。

【问题讨论】:

  • 请注明“不起作用”
  • 当你*app = 3时,app持有什么地址?未定义。
  • app 没有指向任何有效的内存地址。在第一种情况下,您一定会遇到分段错误。
  • 谢谢大家。我应该意识到这么明显的错误。

标签: c++ pointers cout


【解决方案1】:

你想做什么?这是未定义的行为。

int *app;  // pointer is not initialized.
int abc = 2;
*app=3;  // de-referencing an uninitialized pointer.  Bad.

【讨论】:

    【解决方案2】:

    问题出在这里:

    *app=3;
    

    这可能会导致分段错误未定义的行为

    如果将其删除,则可以看到预期的输出。

    【讨论】:

    • ...还有这里cout &lt;&lt; *app &lt;&lt; endl &lt;&lt; &amp;*app
    • 当然是@bkVnet。由于*app=3; 注定是错误的,因此打印w.r.t.这将是有问题的。你认为我应该在我的回答中包括这个吗?
    • 不,我只是在提到显而易见的事情。你已经很好地解决了这一点。
    猜你喜欢
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多