ВУЗ:
Составители:
66
Здесь приведение типа (void*)m абстрагирует от того,
что m является массивом, и трактует его как «просто указатель» , т.е. как
просто адрес ячейки памяти.
Замечание . Эта формула в некоторых случаях может не работать в
ОС MS-DOS. В MS-DOS существует такое понятие, как модель памяти.
Согласно модели памяти , указатель может иметь модификатор:
near – «ближний» указатель, т.е. указатель в пределах одного
сегмента памяти в 64 Кбайт;
far – «дальний» указатель, может ссылаться куда угодно.
В MS-DOS near указатель имеет размер 2 байта, а far – 4 байта. Сам
модификатор указателя может указываться между типом и *, например
char far *p – дальний указатель на p. Ближние и дальние указатели
смешивать нельзя, и в нашей формуле правильно было бы сначала
привести оба указателя (p и m) к типу void far *.
Все сказанное о моделях памяти относится только к MS DOS (или
Windows 3.x, которая является надстройкой для DOS). В других
операционных системах проблемы с видами указателей нет, а слова near и
far не являются стандартными для языка C.
6.4. Использование указателей
Указатели – очень мощный инструмент языка C. Существует
достаточно много способов использования указателей . Один из очевидных
вариантов соответствует названию указателей : использовать их для ссылки
одного объекта данных на другой. При этом в зависимости от
потребностей программы могут строиться самые разнообразные варианты
взаимосвязанных данных: списки, деревья, графы и так далее.
Однако , есть еще ряд ситуаций , когда применение указателей
необходимо. Эти ситуации рассматриваются в данной главе .
6.4.1 Передача параметров по ссылке
Когда необходимо, чтобы функция могла изменить значения своих
параметров, а не только вернуть одно значение оператором return, такие
параметры описываются как указатель на соответствующий тип , а при
вызове функции в нее передается адрес нужной переменной.
66 Здесь приведение типа (void*)m абстрагирует от того, что m является массивом, и трактует его как «просто указатель», т.е. как просто адрес ячейки памяти. Замечание. Эта формула в некоторых случаях может не работать в ОС MS-DOS. В MS-DOS существует такое понятие, как модель памяти. Согласно модели памяти, указатель может иметь модификатор: near – «ближний» указатель, т.е. указатель в пределах одного сегмента памяти в 64 Кбайт; far – «дальний» указатель, может ссылаться куда угодно. В MS-DOS near указатель имеет размер 2 байта, а far – 4 байта. Сам модификатор указателя может указываться между типом и *, например char far *p – дальний указатель на p. Ближние и дальние указатели смешивать нельзя, и в нашей формуле правильно было бы сначала привести оба указателя (p и m) к типу void far *. Все сказанное о моделях памяти относится только к MS DOS (или Windows 3.x, которая является надстройкой для DOS). В других операционных системах проблемы с видами указателей нет, а слова near и far не являются стандартными для языка C. 6.4. Использование указателей Указатели – очень мощный инструмент языка C. Существует достаточно много способов использования указателей. Один из очевидных вариантов соответствует названию указателей: использовать их для ссылки одного объекта данных на другой. При этом в зависимости от потребностей программы могут строиться самые разнообразные варианты взаимосвязанных данных: списки, деревья, графы и так далее. Однако, есть еще ряд ситуаций, когда применение указателей необходимо. Эти ситуации рассматриваются в данной главе. 6.4.1 Передача параметров по ссылке Когда необходимо, чтобы функция могла изменить значения своих параметров, а не только вернуть одно значение оператором return, такие параметры описываются как указатель на соответствующий тип, а при вызове функции в нее передается адрес нужной переменной.
Страницы
- « первая
- ‹ предыдущая
- …
- 64
- 65
- 66
- 67
- 68
- …
- следующая ›
- последняя »