私はCで二重連結リストを扱っていますが、常に事実として受け入れられていることに気付いた、またはかつて答えを知っていたのに忘れてしまったことに気づきました。これは、ポインターを再び使用し始めたときによく発生し、毎回ポインターを再学習する必要があります。
これが私のセットアップの基本です:
int main(void)
{
video *head = NULL;
video *tail = NULL;
char *buffer = NULL;
buffer = (char*)malloc(sizeof(MAX_TITLE_LENGTH));
printf("Enter a title: ");
fgets(buffer, MAX_TITLE_LENGTH, stdin);
insert(buffer, &head, &tail);
}
私は構造を持っています:
typedef struct video
{
char title[MAX_TITLE_LENGTH];
struct video *prev;
struct video *next;
}video;
挿入用プロトタイプ:
int insert (char *title, video **head, video **tail);
なぜビデオのアドレスを具体的に渡さなければならないのか疑問に思っています。
文字を渡す方法は、文字列の先頭のメモリ内のアドレスを渡すことを知っています。値にアクセスするために、なぜ head と tail を再度逆参照する必要があるのですか?
これは正直なところ、私が考えているよりも単純です。私はそれを確信しており、ポインターについて考えるのが苦手です。
誰かがそれを緩めることができますか?
ありがとう。