2017-01-21 4 views
-1

配列を使用しないでください。配列の宣言は、中間インデックスを使用していません

int arr[30]; 

arr[1]=x; 
arr[2]=y; 
arr[30]=z; 

を使用して、その後ARR [3]〜ARR [29]は、未使用で不要なメモリ空間を消費します。

arr [3]〜arr [29]にメモリを割り当てない方法はありますか?

+1

同様のマップを実装します。 – BLUEPIXY

+1

別の方法は[疎配列](https://en.wikipedia.org/wiki/Sparse_array)です。しかし、それは具体的には、あなたが最も適切なソリューションを選択するために何をしたいかによって決まります –

答えて

1

Cが提供する組み込み配列は、あなたが求めるものを単純にしません。

ハッシュテーブルなどのデータ構造を管理するためのコードを書くことはできますが、コンパイラはそれを実行しません。

また、arrを長さ30と宣言しているため、arr[30]=zは無効な操作です。インデックスはゼロベースなので、0-29だけが有効です。

0

次の文を持っている場合は、メモリ割り当ての量が決定されます。

int arr[30];

この文は、基本的に30の整数の連続したメモリを調達するために、実行時に指示します。メモリが不安な場合は、宣言時に配列のサイズを小さくするか、リンクリストを使用してください。

関連する問題