考虑这个简单的代码:
#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
void* voidptr;
cout << voidptr << endl;
}
这是错误:The error
当我在 visual studio 2015 中运行它时,出现调试错误,但是当我在代码块中执行此操作时,程序可以正常运行。我在我的教科书中读到我们可以在不初始化的情况下使用指针,但现在我不能在 Visual Studio 中完成。 有人知道问题出在哪里吗?
这是我的教科书:Object-oriented programming in c++ by Roabert Lafore
最佳答案
当你编译这个程序时,编译器会警告你使用了 voidptr
而没有在这一行中初始化:`cout << voidptr << endl;
当你运行这个程序时,你会得到这个错误:
这再次告诉您 voidptr
没有被初始化就被使用了。这再清楚不过了。
在 C 和 C++ 中,局部变量没有被初始化,它们包含之前内存中的所有值,这些值是不确定的。现在,当您运行程序的调试版本时,您会收到此调试消息,因为编译器非常友好地告诉您您正在使用未初始化的变量。
尝试运行该程序的发布版本,您不会再收到任何错误,但会显示一些明显随机的值。
关于c++ - 在 Visual Studio 2015 和 C++ 语言中没有初始化的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39742393/