0

私はC試験に取り組んでおり、リンクリストに要素を挿入しようとしているときに、実行時の問題が発生しています。私の唯一の目的は、リストに4つの要素を追加してから、リストを印刷することです。ただし、エラーが発生します。私はすでにいくつかの挿入コードを調べましたが、私のコードは正しいようです。エラーが表示されません。どんな援助もいただければ幸いです。

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

struct ders{
    char kod;
    struct ders *next;

}*header;
typedef struct ders Ders;
void add(Ders*,Ders*);
void print(Ders*);

int main(void)
{

header = NULL;
Ders *node = NULL;
int i = 0;
char c;
while(i<4)
{
    scanf("%c",&c);
    node = (Ders*)malloc(sizeof(Ders));
    node->kod = c;
    node->next = NULL;
    add(header,node );
    i++;


}
print(header);

return 0;
}

void add(Ders *header, Ders *node)
{
    if(header == NULL){
        header = node;
        header->next = NULL; }
    else{
        node->next = header;
        header = node;

    }
}

void print(Ders *header)
{
Ders *gecici = header;

while(gecici != NULL){
    printf("%c\n",gecici->kod);
    gecici = gecici->next;
}
}
4

1 に答える 1

1

nihirus が述べたように、「ポインターは値によって渡されます。したがって、ポインターが指すメモリを変更することはできますが、実際のポインターを変更することはできません。つまり、他の何かを指すようにすることはできません。」

よりも優先順位が高い *header is not member of struct ため 、変更はエラーになりました->*

(*header)->next = NULL 代わりに使用してみてください 。

C 演算子の優先順位: http://www.difranco.net/compsci/C_Operator_Precedence_Table.htm

于 2013-03-03T16:43:44.887 に答える