Языки программирования для численных методов. Глушакова Т.Н - 66 стр.

UptoLike

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, такие
параметры описываются как указатель на соответствующий тип, а при
вызове функции в нее передается адрес нужной переменной.