2016-12-05 83 views
0

我知道初始化字符数组的正确方法如下:如何正确声明和初始化Char数组?

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

但是你可以请帮助我了解什么是当我们声明一个字符数组作为字符指针走一段路,然后初始化使用cin.getline这样的:

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

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

+3

不会'std :: string句子; std :: getline(std :: cin,句子);'更好? –

+1

指针是**不是**数组! – Olaf

回答

1
char* sentence; 
cin.getline(sentence,256); // wrong 

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

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

+1

@ vu1p3n0x它最初是用C/C++标记的 – artm