我正在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);
,我很奇怪,爲什麼我要專門傳遞視頻*的地址。
我知道我通過字符的方式,它傳遞字符串開始的內存中的地址。爲什麼我必須第二次去掉頭部和尾部才能訪問它們的值?
這實際上比我想的更簡單,我確信它,而且我的腦子處在一個不好的地方,思考指針。
任何人都可以把它鬆動?
謝謝。
我現在明白了。感謝您花時間回答這樣一個很好的答案。我正在修改舊的雙鏈表代碼以保存其他內容,並且我忘記了這是如何工作的,因此您正在使用它,這正是它的原因! – Steve