2016-10-16 5 views
0

私は、この変数を持っている:Cでchar * var []に要素を追加する方法は?

char *var[] = {get_answer(answers, 0), get_answer(answers, 1)}; 

私はvar[]の3番目の要素としてget_answer(answers, 2)を追加したい、これは私が試したものです:

var[2] = get_answers(answers, 2); 

何もしていないようでした。 上記変数に要素を追加するにはどうすればよいですか?

+1

は、2つの基本的な選択肢があります。 1.関数呼び出しの結果を使用してアレイを初期化しています。イニシャライザはコンパイル時になるので、これはうまくいかない(コンパイラの警告はあなたに何を伝えたのか?)2.それでも、varは2つの要素しか持たないので、要素を "追加"することはできません。 varを3要素と宣言できます。 –

+0

動的に要素を追加できる他のデータ構造(リンクされたリストなど)の使用を検討する必要があります。 – b1sub

答えて

0

アレイのサイズvarは、初期化中に指定した要素の数に基づいて自動的に決定されます。それ以上の要素を割り当てても変化しません。したがって、var[2]に割り当てることはできません。

malloc()を使用してポインタの配列を動的に割り当てることもできます。 NULLポインタのように、初期化中にさらに多くの要素を提供してください。または、配列のサイズを明示的に指定します。

char *var[] = {get_answer(answers, 0), get_answer(answers, 1), NULL, NULL, NULL}; // 5 elements 

又は

char *var[10] = {get_answer(answers, 0), get_answer(answers, 1), NULL, NULL, NULL}; // 10 elements 
0

として定義配列:

char *var[] = {get_answer(answers, 0), get_answer(answers, 1)}; 

は二つの要素の "固定" サイズを有します。これはあなたが書いたのと同じです:

char *var[2] = {get_answer(answers, 0), get_answer(answers, 1)}; 

したがって、3番目の要素の余地はありません。

1)追加のエントリのための部屋とvar(またはエントリを宣言します):

char *var[3] = {get_answer(answers, 0), get_answer(answers, 1)}; 
// ... 
var[2] = get_answers(answers, 2); 

2)Initilize第三の要素を持つ代わりに:

char *var[] = {get_answer(answers, 0), get_answer(answers, 1), get_answers(answers, 2)}; 
関連する問題