11 / 11 / 5
Регистрация: 02.02.2011
Сообщений: 211
1

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

18.11.2014, 22:06. Показов 5310. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
В институте преподаватель сказала, что "Имена фактических и формальных параметров не должны совпадать", причем обязательно так делать во всех лабораторных.
Я не могу понять, какой в этом смысл? На вопросы она начала злиться и ничего не ответила.
Насколько я понимаю, в си/с++ в этом нет смысла и можно называть параметры одинаково? А она просто перепутала с каким-то другим языком.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2014, 22:06
Ответы с готовыми решениями:

В каких методах фактических параметров (аргументов) больше, чем формальных?
подскажите, в каких методах фактических параметров(аргументов) больше чем при их описании?...

Несоответствие в списке формальных параметров
Ошибка 1 error C2563: несоответствие в списке формальных параметров (17 строка) #include...

Список формальных параметров в функции
Не понимаю цель формальных параметров. Зачем, например, вводить (int a, int b) в функции int...

Использование функций в качестве формальных параметров
Помогите вычислить f(x)/g(x), где в качестве f(x) и g(x) могут быть четыре различные функции,...

5
Вездепух
Эксперт CЭксперт С++
11186 / 6129 / 1677
Регистрация: 18.10.2014
Сообщений: 15,427
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);
Но зачем это запрещать? Это же бред.
1
11 / 11 / 5
Регистрация: 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, только какой в этом смысл..
0
594 / 532 / 76
Регистрация: 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 - фактический параметр
}
ответ: нет
0
Вездепух
Эксперт CЭксперт С++
11186 / 6129 / 1677
Регистрация: 18.10.2014
Сообщений: 15,427
18.11.2014, 23:32 5
Цитата Сообщение от koka3000 Посмотреть сообщение
вначале назвали aName, а потом name, только какой в этом смысл
Ну уж, извените...

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

Указывать имена параметров в объявлении функции (прототипе) не обязательно. И лучше их вообще не указывать, чем указывать разные.
0
Заблокирован
19.11.2014, 04:05 6
Лучший ответ Сообщение было отмечено koka3000 как решение

Решение

Цитата Сообщение от koka3000 Посмотреть сообщение
На вопросы она начала злиться и ничего не ответила.
Дама пришла из Паскаля.

В С/С++ это не нужно и даже вредно с точки зрения читабельности кода.
Разве что - будут глобальные переменные. Тогда может получиться нехорошо. Потому глобальные переменные - тоже нехорошо.
0
19.11.2014, 04:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2014, 04:05
Помогаю со студенческими работами здесь

Error C2563: несоответствие в списке формальных параметров
вот отрывок программы с ошибками, что не так? int i = 0; while (x &lt;= xk) { if (x &lt;= 0)...

Как понять список формальных параметров функции Bar?
class Foo { void friend Bar(Foo &amp; foo); private: int data;

Ошибка в калькуляторе "Несоответствие в списке формальных параметров"
такая ситуация: второй день учу с++, до этого ничего не учил, поэтому прошу помощи. Пытался...

Написать программу, которая вычисляет значение выражения, и определить ее значение для введенных пользователем значений фактических параметров.
Написать программу, которая вычисляет значение выражения, и определить ее значение для введенных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru