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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Faxed
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 7
#1

Список формальных параметров в функции - C++

02.04.2014, 17:35. Просмотров 510. Ответов 6
Метки нет (Все метки)

Не понимаю цель формальных параметров. Зачем, например, вводить (int a, int b) в функции
C++
1
2
3
4
int summ(int a,int b)
{
Return a+b;
}
Вот все, что нашел в интернете:
"В общем виде синтаксис функции выглядит следующим образом:

возвр_тип имя_функции (список_параметров)

{

тело функции

}

Тело функции содержит последовательность операторов языка, выполняющих некоторые действия.

Возвр_тип определяет тип значения (результата), возвращаемого функцией. Функция может возвращать значение любого типа, за исключением массивов. Имя_функции представляет собой идентификатор, после имени функции обязательно следуют круглые скобки. В скобках указывается список формальных параметров. Каждый элемент списка формальных параметров состоит из имени переменной и ее типа. Все параметры функции должны объявляться отдельно, причем для каждого из них надо указывать и тип, и имя. При вызове функции формальные параметры заменяются значениями фактических аргументов."
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 17:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Список формальных параметров в функции (C++):

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

Несоответствие в списке формальных параметров - C++
Ошибка 1 error C2563: несоответствие в списке формальных параметров (17 строка) #include "stdafx.h" #include <iostream> #include...

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

Имена формальных и фактических параметров должны отличаться? - C++
Здравствуйте. В институте преподаватель сказала, что "Имена фактических и формальных параметров не должны совпадать", причем обязательно...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.04.2014, 18:13 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Как компилятор должен понять, что за переменные a и b в функции?
1
Faxed
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 7
02.04.2014, 19:42  [ТС] #3
alsav22, то есть, объявлять переменные необязательно, это можно сделать тут, да???

Добавлено через 6 минут
А могу оставить скобки пустыми и объявить все в теле функции, да???
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.04.2014, 19:55 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Faxed Посмотреть сообщение
А могу оставить скобки пустыми и объявить все в теле функции, да???
Можно, но это будут переменные, объявленные в теле функции, а тут разговор идёт о переменных, которые передаются в функцию при вызове.
1
Faxed
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 7
02.04.2014, 20:04  [ТС] #5
alsav22, то есть, если я объявил в теле какой-либо функции, то я их не смогу, не передавая, использовать в другой функции, или как?
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
02.04.2014, 20:26 #6
Параметры в функцию можно передавать 3 способами
C++
1
2
3
int summ1(int a);
int summ2(int* pa);
int summ3(int& ra);
В 1 случае (параметр int a) передается по значению,
т.е. в теле функции оказывается копия фактического параметра.
Соответственно, если ее поменять, то оригинал не поменяется:

Во 2 случае (параметр int* pa) передается адрес фактического параметра.
Соответственно зная адрес можем поменять фактический параметр:
В 3 случае параметр передается по ссылке. Это означает,
что передается непосредственно переменная и мы ее можем поменять:
C++
1
2
3
4
5
6
7
8
9
10
void summ1(int a){a=0;}
void summ2(int* pa){(*pa)=1;}
void summ3(int& a){a=2;}
int main()
{
    int x=-1;
    summ1(x);// x не меняется
    summ2(&x);// x станет равным 1
    summ3(x);// x станет равным 2
}
1
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.04.2014, 21:23 #7
Цитата Сообщение от Faxed Посмотреть сообщение
то есть, если я объявил в теле какой-либо функции, то я их не смогу, не передавая, использовать в другой функции,
Да. Такие (локальные) переменные удаляются (память под ними считается свободной) при выходе из функции.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2014, 21:23
Привет! Вот еще темы с ответами:

Список параметров функции из DLL - C++
В runtime загружаю DLL'ки, вывожу список функций содержащийся в них, но так и не нашёл вариантов как экспортировать типы аргументов и...

Пустой список параметров в c и c++ - C++
Работаю в visual studio 2010. Прочитал, что в C пустой список параметров означает, что компилятор не проверяет аргументы и этой функции...

Получение значения через список параметров - C++
Доброго времени суток! есть переменная: int *X=NULL; Необходимо передать её адрес в функцию в которой выделяется для неё память и...

О формальных параметрах - C++
Вопрос вот в чем, возможно ли в С++ объявить формальный параметр так , чтоб при подстановке вместо него фактического, в процессе выполнения...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.04.2014, 21:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru