2010-11-19 11 views
0

構造体とintを配列に格納するにはどうしたらいいですか?構造体とintを配列に格納する

/*a struct to keep block information*/ 
struct header{ 
    int freeSpace; 
    struct header *nextHead; 
    struct header *prevHead; 
}; 

int myinit(int *array, int size){ 

    array[0] = size; 

    /*initial block*/ 
    struct header root; 
    root.freeSpace = size - (sizeof(struct header)); 

    array[1] = root; /*write the intial block to the array*/ 

} 

答えて

2

配列のゼロ要素はサイズを保持しません。また、同時に1つの配列intとstructに格納することはできません。配列内には単一のオブジェクト型しか使用できません。あなたが次のことを行う必要があり、動的リストを作成するための

  • が(それはかなり良い、それを書き換えていない、mallocを使用)ルート要素のためのスペースを割り当てる

  • が領域を割り当てます要素とこのようなルートにそれをバインド:

    void constructList() { 
        ... 
        struct header * pRoot = ...; 
        pRoot->previousHead = NULL; 
        struct header * pSecond = ...; 
        pSecond->previousHead = pRoot; 
        pRoot->nextHeader = pSecond; 
        ... 
    

    }

  • キープ追加要素

  • 仕上げ建設

    リスト

    pLastElement-> nextHeader = NULL;

次に、あなたがNULLでnextHeaderポインタをcomapringことで、それは終わりだチェックリストを実行することができます。

+0

ダイナミックリストを作成し、配列を使用しないと言ったことを読んで、既に投稿したものからどこに行くべきかを示唆していますか? – Alex

+0

ps:私はmallocを書き換えているので、配列[0]に格納されたサイズが必要です – Alex

0

hereからこのコードを見て、それがあなたを助けることができるかもしれません。

#include<stdlib.h> 
#include<stdio.h> 

struct list_el { 
    int val; 
    struct list_el * next; 
}; 

typedef struct list_el item; 

void main() { 
    item * curr, * head; 
    int i; 

    head = NULL; 

    for(i=1;i<=10;i++) { 
     curr = (item *)malloc(sizeof(item)); 
     curr->val = i; 
     curr->next = head; 
     head = curr; 
    } 

    curr = head; 

    while(curr) { 
     printf("%d\n", curr->val); 
     curr = curr->next ; 
    } 
} 

についてです。

0

アレイは単なるメモリブロックです。

このメモリーブロックの特定の部分には、オフセット番号を指定してアクセスします。あなたは、それが配列のタイプのサイズを使用し、3

これは、配列が一つだけのデータ型を含めることができることを意味し

を掛けます3オフセットでデータのブロックに到達したいのであればそれ以外の要素にアクセスしますこの配列の中には混乱があります。

1

異なるタイプのアイテムを配列に格納することはできません。何行うことができますことは、あなたが興味を持っているタイプのそれぞれを格納ユニオン型を作成し、その組合型の配列を作成することです:

union myData 
{ 
    int ival; 
    struct header sval; 
    ... 
}; 

union myData myArr[N]; 
struct header foo; 
... 
myArr[0].ival = 100; 
myArr[1].sval = foo; 

しかし、私はこれがソリューションあなただとは思いません探しています。ここであなたが達成しようとしていることを正確に知ることができます。 なぜあなたは1つの配列要素に構造体を格納しようとしていますか?

関連する問題