错误:“使用未初始化的局部变量 'name'”在 C++ 中使用 char *

Posted

技术标签:

【中文标题】错误:“使用未初始化的局部变量 \'name\'”在 C++ 中使用 char *【英文标题】:Error: "uninitialsed local variable 'name' used" in C++ using char *错误:“使用未初始化的局部变量 'name'”在 C++ 中使用 char * 【发布时间】:2017-01-19 17:18:57 【问题描述】:

我已经写了这段代码sn-p:

int main()

    char *name;
    cin >> name;

    return 0;

编译后出现错误:“使用了未初始化的局部变量'name'”。我不明白为什么会这样。请解释一下我的问题。

谢谢。

【问题讨论】:

name 未初始化,您正在使用它吗?我不明白这种混乱。此外,这是即时段错误。 cin >> name 指示输入流读取一个字符串并将其存储在name 指向的内存中。在您的代码中,name 没有指向任何内存。 这显然是 C++,而不是 C。它们不是同一种语言 --- 请使用适当的标签。 @DeiDei,你希望这是一个即时的段错误,但在实践中,这些事情可以保持安静,直到你向老板演示。 Or your boss is showing off the new USB support at ComDex. 【参考方案1】:

char* 是一个指向 char 的指针,目前它没有“指向”任何地方。你可以分配一些内存并指向它。

char* name = new char[64];
cin >> name;
delete[] name;

但是,您可以使用std::string 来避免此要求。看看这里的一些例子:http://www.cplusplus.com/forum/articles/6046/

【讨论】:

【参考方案2】:

除非您为 name 分配内存,否则您正在写入未初始化的指针。

试试这个:

#include <iostream>

int main()

    char *name = new char[100];
    std::cin >> name;
    delete [] name;
    return 0;

【讨论】:

措辞具有误导性。分配内存并不能解决直接的问题,即指针未初始化。分配一个值(这可能需要也可能不需要分配内存)。 如果他试图从 std::cin 写入,他需要分配内存 - 如果他只是将字符串文字分配给 char * 指针,它将是只读内存 “如果他试图从 std::cin 写入,他需要分配内存” - 不,你需要一个有效的指针。这并不意味着分配内存,例如char buffer[100]; char* name = &amp;buffer[0]; 将有效指针分配给name,而不分配内存。分配一个有效值是这里的关键。

以上是关于错误:“使用未初始化的局部变量 'name'”在 C++ 中使用 char *的主要内容,如果未能解决你的问题,请参考以下文章

我收到错误错误类型参数一元减号和预期';'在 ':' 标记之前

Amazon S3 图像在 Chrome 中获取 CORS 错误/错误,在 Firefox 中没有错误

为啥这个解析错误在这里解析错误:语法错误,意外标识符“编辑”,期待“,”或“;”? [复制]

错误:无法在视图目录节点 JS 和 Jquery 错误中查找视图“错误”

Java编程中常见的错误都有哪些

c ++:在数学错误中创建实际错误而不是nan