08
Ноя
2015

Обнуление указателя внутри функции

Есть некая структура

typedef struct db db;

struct db {
    int nameLen;
    char * name;
    int count;
    int rowId;
    int maxRows;
    record * rows;
};

В самой программе она объявлена так:

db * DB;

Есть функция :

void close (db * DB)
{
    int i = 0;

    for (i = 0; i < DB->count; i++)
        free(DB->rows[i].nums);

    free(DB->rows);
    free(DB->name);
    free(DB);
    DB = NULL;
}

Вызываю её так (printf для вывода адреса указателя):

printf("%i \n", DB);

close(DB);

printf("%i \n", DB);

Проблема в том, что указатель не сбрасывается в NULL, выводимое значение до вызова close(DB) и после одинаково. Что я делаю не так, и как будет правильнее обнулить указатель DB внутри функции, если такое возможно?

Источник: https://ru.stackoverflow.com/questions/464775/%D0%9E%D0%B1%D0%BD%D1%83%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8F-%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8

Share

Тебе может это понравится...