c++ - 在 Visual Studio 2015 和 C++ 语言中没有初始化的指针

标签 c++ visual-studio pointers

考虑这个简单的代码:

#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;

当你运行这个程序时,你会得到这个错误:

enter image description here

这再次告诉您 voidptr 没有被初始化就被使用了。这再清楚不过了。

在 C 和 C++ 中,局部变量没有被初始化,它们包含之前内存中的所有值,这些值是不确定的。现在,当您运行程序的调试版本时,您会收到此调试消息,因为编译器非常友好地告诉您您正在使用未初始化的变量。

尝试运行该程序的发布版本,您不会再收到任何错误,但会显示一些明显随机的值。

关于c++ - 在 Visual Studio 2015 和 C++ 语言中没有初始化的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39742393/

相关文章:

visual-studio - Visual Studio 安装和部署 : Adding Pre Requisits

c# - 将 VSIX 功能添加到 C# 类库

c# - C++中指针和C#中引用类型的区别

c - C 处理指针时出现段错误

c++ - 如何使用 VSCode 在 C++ 中观看中文字符串?

c++ - 将脚本语言集成到 C++ 应用程序中

c++ - 使用 Boost Geometry 的线相交

visual-studio - 为什么 Visual Studio 提供拆分代码查看

C++ 指针转换帮助,void* 到 bool 值

C++ 惯用类型特征