Параметры ссылочного типа

Для возврата полученных результатов простого типа из функций ссылочный тип используется следующим образом:

  • в заголовке функции параметры-результаты (в нашем примере y, z) записываем как переменные ссылочного типа, то есть с символом ;
  • в тексте функции никакие дополнительные операции, а значит, и символы, для этих переменных не используем, то есть работаем, как с обычными переменными;
  • при вызове функции в качестве фактических параметров, указываем простые переменные соответствующего типа (cs, sn), объявленные обычным образом;
  • входные параметры-значения используются по тем же правилам (см. §1);
  • вызов функции типа void с несколькими результатами осуществляется как вызов функции типа void без результата, то есть отдельно, а не в выражении (см.§1).

Почему полученное значение возвращается в вызывающую функцию? Мы уже знаем, что с помощью ссылочного типа определяется другое имя ячейки. Поэтому для формального (y) и фактического (cs) параметров отводится одна и та же ячейка, которая в функции SINCOS называется y, а при вызове в головной функции — cs. Поэтому если в функции получим y, то этим самым определим и значение cs, то есть полученное в функции значение возвращается в вызывающую функцию просто с другим именем. При этом никакого копирования не выполняется. Аналогично для переменных z и sn также резервируется одна и таже ячейка оперативной памяти.

Аналогично ссылочный тип используется и в случае, если значение переданной в функцию переменной надо не просто получить, как в рассмотренном выше примере, а передать в функцию, изменить и это изменённое значение надо возвратить в точку вызова. В таком случае одна и та же переменная является и входным, и выходным параметром. Например, составим функцию для перестановки значений двух переменных:

void CHANGE (float u, float v)

{ float temp=u; u=v; v=temp; }

Тогда вызвать её можно, например, так:

float a=1.1, b=2.2; CHANGE( a, b);

Так как a и u — это два имена одной и той же ячейки благодаря ссылочному типу, то изменение u с 1.1 на 2.2 автоматически приведёт к изменению переменной a. Аналогично изменится и переменная b,если изменили значение переменной v. И тогда оператор cout

Модуль 22. Типы значений и ссылочные типы в языке C#


Читать еще…

Понравилась статья? Поделиться с друзьями: