2016-12-05 17 views
0

私は次のようにchar型の配列を初期化する適切な方法があることを知っている:文字配列を正しく宣言して初期化する方法は?

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

しかし、あなたは、私たちがcharのポインタとしてchar型の配列を宣言するとき、私は何が起こっているかを理解し、それを初期化してくださいすることができますこのようなcin.getlineを使用して:

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

私は私のコードが狂っているので、第二の方法が悪いことを知っています。

あなたのポインタ sentenceが初期化されていないため、入力として使用することはできませんので、それを行うことはできません
+3

'std :: string sentenceではなく、 std :: getline(std :: cin、sentence); '良い? –

+1

ポインタは**配列ではありません**! – Olaf

答えて

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

。初期化せずにポインタを使用すると、未定義の動作が発生します。

第1の方法(配列を使用)に固執する。それ以外の場合は、ポインタに動的に割り当てるにはnewが必要です。使用後はdeleteに覚えておく必要があります。

+1

@ vu1p3n0xこれはもともとC/C++ – artm

関連する問題