我需要澄清指针初始化。 我试图使用一个指针加倍而不在我的代码的主要部分初始化它,它编译/执行没有任何问题。相反,如果我在函数内部使用没有初始化的指针,它会使代码在运行时崩溃。 我举个例子:
#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
不会产生任何问题。
答案 0 :(得分:2)
我尝试使用指针加倍而不在我的代码主程序中初始化它并且编译/执行没有任何问题
指向未初始化的指针具有未定义的行为。 &#34;执行没有任何问题&#34; 是程序行为未定义时可能发生的事情。
相反,如果我在函数内部使用没有初始化的指针,它会使代码在运行时崩溃。
指向未初始化的指针具有未定义的行为。 &#34;使代码在运行时崩溃&#34; 是程序行为未定义时可能发生的事情。
当行为未定义时,任何事情都可能发生。