LINUX.ORG.RU

История изменений

Исправление beastie, (текущая версия) :

Кстати, простенький и красивый пример использования поинтеров в реальной жизни (идиома спёрта мной когда-то из сырцов Plan9):

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

struct list {
        int value;
        struct list *link;
};

int
main()
{
        struct list *head, **headp, *p;
        int i;

        /* инициализируем */
        head = NULL;
        headp = &head;

        /* заполняем */
        for (i = 0; i < 10; i++) {
                *headp = malloc(sizeof(struct list));
                assert(*headp);
                (*headp)->value = i;
                headp = &(*headp)->link;
        }

        /* печатаем */
        for (p = head; p; p = p->link)
                printf("%d\n", p->value);

        /* освобождать память лень, само очистится ☺ */
        return 0;
}


PS: тут кстати и * и ** и &. ☺

Исправление beastie, :

Кстати, простенький и красивый пример использования поинтеров в реальной жизни (идиома спёрта мной когда-то из сырцов Plan9):

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

struct list {
        int value;
        struct list *link;
};

int
main()
{
        struct list *head, **headp, *p;
        int i;

        /* инициализируем */
        head = NULL;
        headp = &head;

        /* заполняем */
        for (i = 0; i < 10; i++) {
                *headp = malloc(sizeof(struct list));
                assert(*headp);
                (*headp)->value = i;
                headp = &(*headp)->link;
        }

        /* печатаем */
        for (p = head; p; p = p->link)
                printf("%d\n", p->value);

        /* освобождать память лень, само очистится ☺ */
        return 0;
}

Исходная версия beastie, :

Кстати, простенький пример использования поинтеров в реальной жизни (идиома спёрта мной когда-то из сырцов Plan9):

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

struct list {
        int value;
        struct list *link;
};

int
main()
{
        struct list *head, **headp, *p;
        int i;

        /* инициализируем */
        head = NULL;
        headp = &head;

        /* заполняем */
        for (i = 0; i < 10; i++) {
                *headp = malloc(sizeof(struct list));
                assert(*headp);
                (*headp)->value = i;
                headp = &(*headp)->link;
        }

        /* печатаем */
        for (p = head; p; p = p->link)
                printf("%d\n", p->value);

        /* освобождать память лень, само очистится ☺ */
        return 0;
}