错误:“使用未初始化的局部变量 '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 = &buffer[0];
将有效指针分配给name
,而不分配内存。分配一个有效值是这里的关键。以上是关于错误:“使用未初始化的局部变量 'name'”在 C++ 中使用 char *的主要内容,如果未能解决你的问题,请参考以下文章
我收到错误错误类型参数一元减号和预期';'在 ':' 标记之前
Amazon S3 图像在 Chrome 中获取 CORS 错误/错误,在 Firefox 中没有错误
为啥这个解析错误在这里解析错误:语法错误,意外标识符“编辑”,期待“,”或“;”? [复制]