Форум программистов, компьютерный форум CyberForum.ru

Имена формальных и фактических параметров должны отличаться? - C++

Восстановить пароль Регистрация
 
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
18.11.2014, 22:06     Имена формальных и фактических параметров должны отличаться? #1
Здравствуйте.
В институте преподаватель сказала, что "Имена фактических и формальных параметров не должны совпадать", причем обязательно так делать во всех лабораторных.
Я не могу понять, какой в этом смысл? На вопросы она начала злиться и ничего не ответила.
Насколько я понимаю, в си/с++ в этом нет смысла и можно называть параметры одинаково? А она просто перепутала с каким-то другим языком.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2014, 22:06     Имена формальных и фактических параметров должны отличаться?
Посмотрите здесь:

О формальных параметрах C++
C++ Написать программу, которая вычисляет значение выражения, и определить ее значение для введенных пользователем значений фактических параметров.
C++ Чем могут отличаться формальные параметры функции от ее аргументов?
Список формальных параметров в функции C++
C++ Как понять список формальных параметров функции Bar?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2781 / 1427 / 393
Регистрация: 18.10.2014
Сообщений: 2,620
18.11.2014, 22:15     Имена формальных и фактических параметров должны отличаться? #2
Цитата Сообщение от koka3000 Посмотреть сообщение
"Имена фактических и формальных параметров не должны совпадать"
А что вообще означает эта фраза?

Традиционно "формальными параметрами" называют собственно локальные параметры функции. А "фактическим параметрами" называют аргументы, указываемые при вызове функции.

У аргументов в общем случае вообще нет никаких имен. Аргументы - это выражения. Например

C++
1
2
3
4
5
6
7
8
void foo(int a, int b)
{
   ...
}
 
...
int x = 4;
foo(2 + 3, x + 1);
Формальными параметрами являются 'a' и 'b' внутри функции, а фактическим параметрами (аргументами) для них в данном случае являются '2 + 3' и 'x + 1'. О каким "именах" фактических параметров вообще может идти речь в этом примере?

Все, что мне приходит в голову это попытка запретить что-то вроде

C++
1
2
int a = 1, b = 2;
foo(a, b);
Но зачем это запрещать? Это же бред.
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
18.11.2014, 22:33  [ТС]     Имена формальных и фактических параметров должны отличаться? #3
TheCalligrapher, насколько я понимаю, вот что она имела ввиду:

void function(int aName);

int main(int argc, char **argv) {
...
}

void function(int name) {
...
}

вначале назвали aName, а потом name, только какой в этом смысл..
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
18.11.2014, 22:57     Имена формальных и фактических параметров должны отличаться? #4
C++
1
2
3
4
5
6
void f(int a); <--- a - формальный параметр
...
int main() {
int b = 10;
f(b); <--- b - фактический параметр
}
ответ: нет
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2781 / 1427 / 393
Регистрация: 18.10.2014
Сообщений: 2,620
18.11.2014, 23:32     Имена формальных и фактических параметров должны отличаться? #5
Цитата Сообщение от koka3000 Посмотреть сообщение
вначале назвали aName, а потом name, только какой в этом смысл
Ну уж, извените...

Во-первых, это, мягко выражаясь, очень нетрадиционное толкование терминов "формальный" и "фактический параметр". А во-вторых, за использование разных имен в таких случаях надо сильно бить по рукам.

Указывать имена параметров в объявлении функции (прототипе) не обязательно. И лучше их вообще не указывать, чем указывать разные.
IrineK
Заблокирован
19.11.2014, 04:05     Имена формальных и фактических параметров должны отличаться? #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от koka3000 Посмотреть сообщение
На вопросы она начала злиться и ничего не ответила.
Дама пришла из Паскаля.

В С/С++ это не нужно и даже вредно с точки зрения читабельности кода.
Разве что - будут глобальные переменные. Тогда может получиться нехорошо. Потому глобальные переменные - тоже нехорошо.
Yandex
Объявления
19.11.2014, 04:05     Имена формальных и фактических параметров должны отличаться?
Ответ Создать тему
Опции темы

Текущее время: 15:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru