指针内部功能

时间:2018-02-22 16:40:11

标签: c++ pointers initialization

我需要澄清指针初始化。 我试图使用一个指针加倍而不在我的代码的主要部分初始化它,它编译/执行没有任何问题。相反,如果我在函数内部使用没有初始化的指针,它会使代码在运行时崩溃。 我举个例子:

#include <iostream>

using namespace std;

void foo()
{
    double *pt2 = new double;
    *pt2 = 10;

    cout << *pt2 << endl;
}

int main()
{
    double *pt;
    *pt = 5;

    foo();

    cout << *pt << endl;
}

在此代码中,如果我发表评论double *pt2 = new double;,它会崩溃,而主要内容未初始化的指针pt不会产生任何问题。

1 个答案:

答案 0 :(得分:2)

  

我尝试使用指针加倍而不在我的代码主程序中初始化它并且编译/执行没有任何问题

指向未初始化的指针具有未定义的行为。 &#34;执行没有任何问题&#34; 是程序行为未定义时可能发生的事情。

  

相反,如果我在函数内部使用没有初始化的指针,它会使代码在运行时崩溃。

指向未初始化的指针具有未定义的行为。 &#34;使代码在运行时崩溃&#34; 是程序行为未定义时可能发生的事情。

当行为未定义时,任何事情都可能发生。