それは私には罰金だが、私はそれを構築しようとすると、GCCはgccポインタエラー ' - >'を使用しましたか?
c206.c: In function ‘DLInsertFirst’: c206.c:104:8: error: ‘*newPtr’ is a pointer; did you mean to use ‘->’? newPtr->lptr = NULL;
c206.c:109:18: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types] L->First->lptr = newPtr;
言う私は、ヘッダー・ファイル内の構造体
typedef struct tDLElem {
int data;
struct tDLElem *lptr;
struct tDLElem *rptr;
} *tDLElemPtr;
typedef struct {
tDLElemPtr First;
tDLElemPtr Act;
tDLElemPtr Last;
} tDLList;
を定義していると私は、このコード
void DLInsertFirst (tDLList *L, int val) {
tDLElemPtr *newPtr = (tDLElemPtr *) malloc(sizeof(struct tDLElem));
if (newPtr == NULL)
DLError();
newPtr->lptr = NULL;
newPtr->rptr = L->First;
newPtr->data = val;
if (L->First != NULL)
{
L->First->lptr = newPtr;
}
else
{
L->Last = newPtr;
}
L->First = newPtr;
}
を持っています私のコードがどこに間違っているのか教えていただけますか?そして、なぜ私はそれを使用するときに ' - >'を使用するように指示するのですか?ありがとう
あなたの間違いは*ポインタ*のtypedefを使用しています。 'tDLElemPtr'は*すでに*ポインタですので、 'tDLElemPtr newPtr'と書くべきです。それとも、うまくいけば、このような混乱するtypedefの追加をやめてください。あなたが見るように、彼らは悪い習慣です。 –
私はそこでtypedefを使用しなければなりません。変更することはできません –
'tDLElemPtr * newPtr *(tDLElemPtr *)malloc(sizeof(struct tDLElem));'スペースの間違った割り当てを割り当てます構造体全体のサイズ)。私はあなたが 'tDLElemPtr newPtr = malloc(sizeof * newPtr);' –