ポインターの動的配列を宣言するのに助けが必要です。それに関するいくつかの記事や同様の質問を読んで、自分のプロジェクトでそれをやろうとしましたが、まだ凍結しています。
私がやろうとしていること:
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);
みんな、ありがとう。