Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
При задании умалчиваемых значений должно соблюдаться правило. Если параметр имеет умалчиваемое значение, то все параметры справа от него также должны иметь умалчиваемые значения.
Рассмотрим пример определения функции с умалчиваемыми значениями.
void print (char*name =”Номер дома: ”, int n =1) { cout << name << n<<endl; } И соответственно вызовы функции:
print(); // Номер дома: 1 – оба значения по умолчанию
print(“Номер билета: ”); // Номер билета: 1 – для второго // параметра используется значение по умолчанию print(, 2); //Ошибка – можно опускать значения с конца списка Удобнее в использовании будет функция с другим расположением параметров:
void print1 (int n =1, char*name =”Номер дома: ”) { cout << name << n<<endl; } И соответственно вызовы: print1(); // Номер дома: 1 – оба значения по умолчанию
print1(2); // Номер дома: 2 – опускается значение второго // параметра print1(3); // Номер дома: 3 print1(3, “Размерность пространства: ”); // Размерность пространства: 3 - умалчиваемые //значения не используются Передача фактических параметров В С++ передача параметров может осуществляться тремя способами:
- по значению, когда в функцию передается числовое значение параметра; - по адресу, когда в функцию передается не значение параметра, а его адрес, что особенно удобно для передачи в качестве параметров массивов;
- по ссылке, когда в функцию передается не числовое значение параметра, а сам параметр и тем самым обеспечивается доступ из тела функции к объекту, являющемуся фактическим параметром.
Передача параметров по значению Формальным параметром может быть только имя скалярной переменной стандартного типа или имя структуры, определенной пользователем. При вызове функции формальному параметру выделяется память в стеке, в соответствии с его типом. Фактическим параметром является – выражение, значение которого копируется в стек, в область ОП, выделенную под формальный параметр. Фактическим параметром может быть просто неименованная константа нужного типа, или имя некоторой переменной, значение которой будет использовано как фактический параметр. Все изменения, происходящие с формальным параметром в теле функции, не передаются переменной, значение которой являлось фактическим параметром функции. Рассмотрим пример передачи параметров по значению: ... void R (int a, int b, int c) { a+=100; b+=100; c+=100; cout << a<<b<<c<<endl; }
Void main () { int a1=1, b1=2, c1=3; cout << a1<<b1<<c1<<endl; R (a1, b1, c1); // аналогично можнобыло вызвать так: R(1, 2, 3); // т.к. нас интересуют только значения фактических параметров cout << a1<<b1<<c1<<endl; } Результат: 1 2 3 // значение переменных до вызова функции 101 102 103 // значения формальных параметров 1 2 3 // значения переменных после вызова функции // функция не изменила значения переменных, являющимися //фактическими параметрами
стек 1 2 3 1 2 3 A1 b1 c1 a b c адреса стек 1 2 3 101 102 103 a1 b1 c1 a b c адреса Рисунок 1 – Схема обмена данными при передаче параметров по значению
|
|||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-19; просмотров: 309; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.222.253 (0.008 с.) |