1

ポインターの動的配列を宣言するのに助けが必要です。それに関するいくつかの記事や同様の質問を読んで、自分のプロジェクトでそれをやろうとしましたが、まだ凍結しています。

私がやろうとしていること:

typedef struct recArmario Armario, *pArmario;

struct recArmario {
    int ID;
    pArmario next;
    pArmario prev;
    pCorredor parent;
};

pArmario auxArmarioTest1 = malloc(sizeof(Armario));
auxArmarioTest1->ID = 1;
pArmario auxArmarioTest2 = malloc(sizeof(Armario));
auxArmarioTest2->ID = 2;

(…)

//Dynamic array of pointer Armario:
pArmario arrArmariosPointers = malloc(sizeof(pArmario) * maxCorredores);
//Here is my doubt
*(arrArmariosPointers + idCorredor) = auxArmarioTest1;

Xcodeは言っています:

Assigning to 'struct recArmario' from incompatible type 'pArmario' (aka 'struct recArmario *'); dereference with *

「『struct recArmario』への代入」ってわからない!? pArmario の配列を 1 つ宣言しています。

*(arrArmariosPointers + idCorredor)と同等arrArmariosPointers[idCorredor]ですよね?

更新 1 :

答えてくれてありがとう! サンプルを更新しましたが、まだ問題があります。

pArmario auxArmarioTest1 = malloc(sizeof(Armario));
auxArmarioTest1->ID = 1;
pArmario auxArmarioTest2 = malloc(sizeof(Armario));
auxArmarioTest2->ID = 2;

//Dynamic array of pointer Armario:
pArmario arrArmariosPointers = malloc(sizeof(pArmario) * 5);
//Test
pArmario auxA;
auxA = arrArmariosPointers + 0; //I know, it's useless :)
auxA = auxArmarioTest1;
auxA = arrArmariosPointers + 1;
auxA = auxArmarioTest2;

printf("\nA%d",(arrArmariosPointers+0)->ID);
printf("\nA%d",(arrArmariosPointers+1)->ID);

free(auxArmarioTest1);
free(auxArmarioTest2);

私が得る結果は次のとおりです。

A0
A0

私が間違っていることは何ですか?

更新 2 :

私のアップデート1を忘れてください、それはばかげていました。私はちょうど変化してauxAいます。

解決策:

pArmario* arrArmariosPointers = malloc(sizeof(pArmario) * 5);

arrArmariosPointers[0] = auxArmarioTest1;
arrArmariosPointers[1] = auxArmarioTest2;

printf("\nA%d",arrArmariosPointers[0]->ID);
printf("\nA%d",arrArmariosPointers[1]->ID);

みんな、ありがとう。

4

3 に答える 3