2013-06-04 5 views
-3
#include <stdio.h> 
#include <stdlib.h> 

struct llnode { 
    int data; 
struct llnode *next; 
}; 
void insert (struct llnode **head, int data); 


int 
main() { 
    struct llnode *head; 
    head = NULL; 
    printf("starting\n"); 
    insert(&head, 4); 



    return 0; 
} 

void 
insert (**struct llnode **head**, int data) {--> why do we use a pointer to a pointer 
    printf("insert %0d\n", data); 

struct llnode *l = malloc(sizeof(struct llnode)); 
    l->data = data; 
    l->next = NULL; 

    if (*head == NULL) { 
     *head = l; 
    } else { 
struct  llnode *tmp = *head; 
     while (tmp->next != NULL) { 
      tmp = tmp->next; 
     } 
     tmp->next = l; 
    } 
} 

1) Почему мы используем указатель на указатель. Можно ли это объяснить на примере. 2) Как сделать вставку в двойной список? HElp me и, пожалуйста, объясните, как печататьПочему мы используем указатель на указатель

+0

Вы уже читали эту [вики] (http://en.wikipedia.org/wiki/Doubly_linked_list)? – mvp

+1

Почему мы используем указатель? –

ответ

1

Указатель на указатель или двойной указатель являются переменными, возможными значениями которых являются адреса памяти других переменных указателя.

У вас есть хороший ответ here, я думаю, он может объяснить это лучше меня.

Также вы можете проверить это link.

+0

Обратите внимание, что ссылки только для ответов не приветствуются на SO, особенно для ссылок только на другие ответы SO. – mvp

2

Часто указатель на указатель используется, когда вы хотите передать функции указатель, который функция может изменить.

Смежные вопросы