2016-10-26 5 views
-4

可変サイズの整数配列を含むCで整数リストを作成したいと思います。メインリストの長さは変更する必要はありません。整数リストをCで作成する

は、どのように私はそれを宣言するだろう - 私の実装を - 特に私のアクセスが機能していません。

int dataArray[length]; 
int dataArray[0] = [1,2,3]; 
int dataArray[1] = [5,6]; 
. 
. 
. 
populate 

for(int a = 0; a<sizeof(dataArray); a++) { 
    tempArr = dataArray[a]; 
    for(into = 0; b>sizeof(tempArr); b++) { 
     print(dataArray[a][b]) 
    } 
} 
+0

何が問題なのですか?それはコンパイルされませんか?実行されませんか?あなたのハードドライブをフォーマットしましたか? 'print'とは何ですか? –

+0

後でそれらの可変長配列の長さを推測*する予定がない限り、それらの配列を使用する予定があるときは、構造体が 'struct IList { size_t length; int *値; } '。 – WhozCraig

答えて

1

あなたの主な配列は、他の配列へのポインタを保持する必要があります。したがって、それはint dataArray[length]ではなく、むしろint* dataArray[length]であるべきです。これは、整数配列への参照の量がlengthになることを意味します。

int* array[length]; 

int randomSizeArray[x]; 
randomSizeArray[0] = 1; 
. 
. 
. 
randomSizeArray[x] = 5; 
int* array[0] = randomSizeArray; 

またsizeof()は、あなたがそれを期待するように動作しません - Cであなたは、アレイ内にあるどのように多くの要素を個別に保存する必要があります。私はあなたが基礎についての不安な知識を持っているように見えるので、Cチュートリアルを一から読むことをお勧めします。

1

sizeofは、要素数ではないバイト数になります。

要素サイズで配列サイズを要素サイズで割ります。

int dataArray[length]; 
int dataArray[0] = [1,2,3]; 
int dataArray[1] = [5,6]; 
... 

// for(int a = 0; a<sizeof(dataArray); a++) { 
for(size_t a = 0; a<sizeof(dataArray)/sizeof(dataArray[0]); a++) { 
    tempArr = dataArray[a]; 
    // for(into = 0; b>sizeof(tempArr); b++) { 
    for(into = 0; b>sizeof(tempArr)/sizeof(tempArr[0]); b++) { 

    // or do you really want 
    // for(size_t = 0; b<sizeof(tempArr)/sizeof(tempArr[0]); b++) { 

     print(dataArray[a][b]) 
    } 
}