【问题标题】:How to declare and initialize a Char Array correctly?如何正确声明和初始化字符数组?
【发布时间】:2016-12-05 00:20:12
【问题描述】:

我知道初始化char数组的正确方法如下:

char sentence[256]={0};
cin.getline(sentence,256);

但是,当我们将 char 数组声明为 char 上的指针然后使用 cin.getline 像这样初始化它时,您能帮我理解发生了什么吗:

char* sentence;
cin.getline(sentence,256);

我知道第二种方式不好,因为我的代码快疯了。

【问题讨论】:

  • std::string sentence; std::getline(std::cin, sentence); 会不会更好?
  • 指针不是数组!

标签: c++ arrays string pointers segmentation-fault


【解决方案1】:
char* sentence;  
cin.getline(sentence,256);  // wrong

您不能这样做,因为您的指针 sentence 未初始化,因此不能用作输入。使用未初始化的指针会导致未定义的行为。

坚持你的第一种方法(使用数组)。否则,你需要new为你的指针动态分配——然后在使用后一定要记得delete

【讨论】:

  • @vu1p3n0x 它最初被标记为 C/C++
猜你喜欢
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-05
相关资源
最近更新 更多