gpt4 book ai didi

C++ Visual Studio : Uninitialized local variable 'response' used

转载 作者:行者123 更新时间:2023-11-28 01:37:20 27 4
gpt4 key购买 nike

当我尝试运行我的代码时,出现错误 C4700,或使用了未初始化的局部变量“response”。我完全是 c++ 编码的初学者,我不明白这意味着什么。我试过添加

char* response = "yes" "no"

它运行了,但是当我输入 yes 或 no 时,我在 Project2.exe 的 0x01222C4B 处收到错误未处理的异常:0xC0000005:访问冲突写入位置 0x0122EAB4。我也不知道这是什么意思。

相关代码如下:

#include <iostream>
#include <string>
using namespace std;

int main(){


int a, b, sum;

cout << "Hey, wanna play a game?" << endl;

char* response;
cin >> response;

if (response == "no"){

cout << "Too bad!" << endl;
}
else if (response == "yes"){

cout << "Ok, here we go!" << endl;
}

如果您决定给出解决方案,请尝试稍微解释一下,以便我理解和学习。

谢谢。

最佳答案

替换字符 *响应使用字符串响应

char * 是一个带有 garbage value 的指针因为它没有用一些有效的内存初始化。当您执行 cin >> response 时,它会尝试写入垃圾值指向的位置。这是 undefined behavior因此访问冲突。

当您使用 std::string 时相反,它确保有必要的空间和有效的内存可用。它会根据需要分配内存。这种情况如何发生的细节超出了这个答案的范围。但如果您好奇的话,这会调用 std::stringoperator >> 重载。运算符(operator)将动态分配所需的内存。

关于C++ Visual Studio : Uninitialized local variable 'response' used,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48699839/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com