*   >> Чтение Образование Статьи >> science >> programming

Принципы Simple C ++ Sequence Container

[я] = defaultObj;}} еще {соиЬ} Если нет динамической памяти, запрос на него (новый Т [noIniCells]) возвращает значение NULL . Таким образом, после попытки создать список, нужно проверить, если указатель NULL. Если это не NULL, вы переходите к заполнить список со значениями по умолчанию. Когда вы добавляете элемент в списке, вы можете проверить, если было динамической памяти . доступны по проверке, если NULL был возвращен Существует проблема здесь:.

Когда вы добавляете элемент, используя квадратные скобки и указатель массива как показано выше, указатель не увеличивается Вы должны увеличить указатель несколько раз, пока он не указывает к дополнительным элементом, прежде чем вы можете использовать его, чтобы проверить, если возвращенное значение NULL. Следующий код иллюстрирует это для INT динамического массива. #include с помощью патезрасе; INT Main () {INT * listPtr = новый INT [5]; listPtr [0] = 0; listPtr [1] = 1; listPtr [2] = 2; listPtr [3] = 3; listPtr [4] = 4; //добавить новый элемент.

listPtr [5] = 5; ++ listPtr; ++ listPtr; ++ listPtr; ++ listPtr; ++ listPtr; если (== NULL listPtr) {} соиЬ --listPtr; --listPtr; --listPtr; --listPtr; --listPtr; вернуть 0; } Вы должны уменьшить указатель, такое же количество раз, что вы, увеличенное его. Если вы не уменьшать, индекс в квадратных скобках для указателя больше не будет отражать их целевое (оригинал) значение; при том условии, указатель с индексом не будет возвращать правильное значение. Читайте выше код, если вы не сделали этого (попробуйте).

Существует еще одна проблема: Предположим, что новый элемент не может быть добавлен, потому что его указатель будет указывать на положение памяти, которая уже принятым какой-то другой объект неизвестного нам. В том случае, когда вы увеличить указатель на количество раз это будет по-прежнему указывают на адрес, который существует, который не NULL. В этом случае, если проверка с нулевым покажет нам, что адрес существует, но адрес не будет иметь наш элемент (и его значение). Это неправильный вывод.

Лучше тест следующим образом: если (* listPtr = 5) {соиЬ} В IF-состоянии, мы разыменования указателя на ячейку памяти предполагаемого добавленного объекта, и мы видим, если возвращенное значение такое же, как значение мы послали для добавленного элемента. В программе выше значение мы послали было 5 Итератор указатель является адрес объекта в памяти. Мы видели выше проблемы, что, когда вы перемещаете указатель массива (имя массива) впереди несколько раз, у вас есть, чтобы пе

Page   <<  [1] [2] [3] [4] >>
Copyright © 2008 - 2016 Чтение Образование Статьи,https://ru.nmjjxx.com All rights reserved.