8 / 7 / 1
Регистрация: 25.12.2019
Сообщений: 321
1

Передача значений переменных в функцию()

05.02.2020, 14:59. Показов 2459. Ответов 32
Метки нет (Все метки)

int main()
Братья программисты! Вот занимаюсь немножко... возник вопрос, но но книжке его ведь не задашь)

Вот 2 фрагмента кода результат работы которых идентичен!
То есть мне не понятно, в чем практический смысл объявлять 2 дополнительные переменные char chin и int nin, когда все работает и без этого? Возможно это полезно в больших реальных программах? Но боюсь если мне здесь от них хочется уйти, там я вообще бы запутался...


C++
1
2
3
4
void repchar(char, int);       // объявляем функцию, с аргументами в скобках, в виде типов переменных!
 
int main()
{

Первый код (как в книжке - страница 176 ООП в С++ Лафоре)
C++
1
2
3
4
5
6
7
8
9
char chin;                     // объявляем переменную отвечающую за символ (передаем ее в функцию - repchar())
cout << " введите символ: ";
cin >> chin;
 
int nin;                       // объявляем переменную отвечающую за число (передаем ее в функцию - repchar())
cout << " введите число повторений символа: ";
cin >> nin;
 
repchar(chin, nin);            // вызываем функцию на выполнение

Второй код где я избавился от этих переменных
C++
1
2
3
4
5
6
7
8
9
char ch;                     // объявляем переменную отвечающую за символ (передаем ее в функцию - repchar())
cout << " введите символ: ";
cin >> ch;
 
int n;                       // объявляем переменную отвечающую за число (передаем ее в функцию - repchar())
cout << " введите число повторений символа: ";
cin >> n;
 
repchar(ch, n);            // вызываем функцию на выполнение

Сама функция
C++
1
2
3
4
5
6
7
8
9
10
system("pause>0");
return 0;
}
 
// определяем функцию - repchar()
void repchar(char ch, int n)
{
    for(int i=0; i<n; i++)     // счетчик от нуля до - n определяемого пользователем
    cout << ch;
}
Результат работы
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2020, 14:59
Ответы с готовыми решениями:

Передача значений переменных функциями
Подскажите пожалуйста, как реализовать эту функцию с помощью указателя (а не ссылки). int...

Передача переменных в функцию
#include &lt;iostream&gt; int fun(int x, int y, int z); int main() { int x, y, z;

Передача переменных в функцию
Какой из следующих вариантов передачи переменных в функцию лучше всего использовать? Так сказать...

Присвоение и передача значений static переменных в классе
Как правильно передать значения SalesPlan и NumOfSales в класс PlanCompletion? При использовании...

32
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
05.02.2020, 15:05 2
Цитата Сообщение от R_U_S_V Посмотреть сообщение
код где я избавился от этих переменных
где ты от них избавился, и в чем суть вопроса? Почему в объявление переменная chin а в майне объявляешь ch?
1
8 / 7 / 1
Регистрация: 25.12.2019
Сообщений: 321
05.02.2020, 15:15  [ТС] 3
Суть вопроса я озвучил в первом посте, а именно...

То есть мне не понятно, в чем практический смысл объявлять 2 дополнительные переменные char chin и int nin, когда все работает и без этого? надо смотреть второй вариант кода, где вместо char chin и int nin стоят ch и n

Добавлено через 1 минуту
в объявлении функции вообще нет переменных, там типы - символьный и числовой
0
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
05.02.2020, 15:16 4
R_U_S_V, А вы думаете, что ch и n не переменные что ли? В чем их отличие от chin и nin кроме меньшего количества букв?
1
1269 / 1026 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
05.02.2020, 15:21 5
Лучший ответ Сообщение было отмечено R_U_S_V как решение

Решение

R_U_S_V, вы пишете, что во втором фрагменте вы избавились от переменных chin и nin, но в действительности вы просто дали им другие имена. Сами переменные от этого никуда не делись.

Если вы имеете в виду, что функция repchar уже содержит переменные ch и n в качестве параметров, то в данном случае это не имеет никакого значения. Переменные ch и n в функции repchar, и переменные ch и n в функции main - это совершенно разные переменные, никак друг с другом не связанные. Поэтому переименование chin в ch никак не влияет на работу программы.
1
8 / 7 / 1
Регистрация: 25.12.2019
Сообщений: 321
05.02.2020, 15:22  [ТС] 6
Вы не поняли сути вопроса! Причем здесь мое не понимание переменных? Вы пост внимательно посмотрите если время найдете!!!!
0
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
05.02.2020, 15:22 7
R_U_S_V, Вы, похоже, думаете, что переименованием переменных чего-то добились.
Это не так. добавьте в repchar в конец строчку ch='A'; А вконец main вывод ch.
1
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
05.02.2020, 15:24 8
R_U_S_V, если три человека прочитали пост и не поняли сути, может быть все-таки дело не в этих людях?
Цитата Сообщение от R_U_S_V Посмотреть сообщение
Второй код где я избавился от этих переменных
Поясните подробно, что вы имеете в виду здесь. Второй код ничем не отличается от первого, кроме имен переменных
1
8 / 7 / 1
Регистрация: 25.12.2019
Сообщений: 321
05.02.2020, 15:24  [ТС] 9
Народ! Поймите, я дал 2 варианта кода именно пому, что они ВМЕСТЕ не используются в данной программе! Либо тот либо этот. Ну для сравнения. Ну как еще объяснить не знаю)
0
57 / 42 / 15
Регистрация: 06.03.2018
Сообщений: 185
05.02.2020, 15:29 10
Цитата Сообщение от R_U_S_V Посмотреть сообщение
2 варианта кода именно
Ты дал те-же яйца только в профиль

А если серьёзно, то наверно нужно изучить что такое область видимости.
1
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
05.02.2020, 15:33 11
Попробую еще добавить, что вот здесь
Цитата Сообщение от R_U_S_V Посмотреть сообщение
void repchar(char ch, int n)
объявляются переменные ch и n, которые используются в функции repchar. И ни в каком другом месте.
А их значения передаются здесь
Цитата Сообщение от R_U_S_V Посмотреть сообщение
repchar(chin, nin);
или здесь
Цитата Сообщение от R_U_S_V Посмотреть сообщение
repchar(ch, n);
И эти варианты идентичны. Это может быть даже
C++
1
repchar('a', 5);
и ch станет 'a', а n 5.
1
8 / 7 / 1
Регистрация: 25.12.2019
Сообщений: 321
05.02.2020, 15:41  [ТС] 12
Я не переименовывал переменные! Я взял их из определения функции
вот отсюда:

C++
1
2
3
4
5
6
// определяем функцию - repchar()
void repchar(char ch, int n)
{
    for(int i=0; i<n; i++)     // счетчик от нуля до - n определяемого пользователем
    cout << ch;
}
и сказал оператору ввода записать значения именно в них а не в переменные "посредник"

вот
C++
1
2
3
4
5
6
7
char ch;                     // объявляем переменную отвечающую за символ (передаем ее в функцию - repchar())
cout << " введите символ: ";
cin >> ch;
 
int n;                       // объявляем переменную отвечающую за число (передаем ее в функцию - repchar())
cout << " введите число повторений символа: ";
cin >> n;
Добавлено через 4 минуты
Отлично, осталось только домыслить, для чего конкретно были нужны эти переменные chin и nin, если их легко можно заменить на те, что объявляются в определении - void repchar(char ch, int n)
Каку-то роль они выполняют в программе! До меня это не доходит "ребят"
0
57 / 42 / 15
Регистрация: 06.03.2018
Сообщений: 185
05.02.2020, 15:42 13
Цитата Сообщение от R_U_S_V Посмотреть сообщение
Я не переименовывал переменные! Я взял их из определения функции
вот отсюда:
Вы заблуждаетесь.
Цитата Сообщение от R_U_S_V Посмотреть сообщение
и сказал оператору ввода записать значения именно в них а не в переменные "посредник"
Вы сказали записать значение именно в посредники с названиями совпадающими с названиями в определении функции.

p.s. Вы нас тролите?
1
1269 / 1026 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
05.02.2020, 15:44 14
R_U_S_V, R_U_S_V, вы точно прочитали моё первое сообщение? Там как раз об этом написано.
1
151 / 103 / 49
Регистрация: 21.11.2019
Сообщений: 285
05.02.2020, 15:45 15
ТС, ты заблуждаешься, если думаешь, что ch в функции main и ch в функции repchar это одна и та же переменная. Это 2 переменные, когда ты вызываешь функцию рэпчик, то в качестве аргумента ты передаешь ей не переменную ch а ее копию или же значение, все операции, которые ты будешь делать с "копией" внутри функции репчик, никак не повлияют на переменную ch внутри функции main, она какой была, такой и останется.
1
8 / 7 / 1
Регистрация: 25.12.2019
Сообщений: 321
05.02.2020, 15:46  [ТС] 16
Да, вы правы!
Я перефразирую вопрос - почему я не могу записать эти значения СРАЗУ в ch и n, которые объявляются в определении функции - void repchar (char ch, int n) ? Это же просто...

Для чего нужны переменные "посредники" chin и nin?
А потом значения этих переменных всеравно копируются в ch и n
Путаница какая-то...
0
57 / 42 / 15
Регистрация: 06.03.2018
Сообщений: 185
05.02.2020, 15:50 17
потому, что cin не позволяет этого.
1
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
05.02.2020, 15:51 18

Не по теме:

мля я под стол уполз



Так первое, еще раз другими словами.
Переменные в майне и в функции это разные переменные.

Объявление в реализации (или прототипе) необходимы что бы в описании функции вы могли с ними работать.

Если вы не будете объявлять переменные в майне то где будите хранить их до того момента как вы передадите их в функцию.
Есть вариант передачи указателей, но это вам рано если у вас возникают такие вопросы
1
7412 / 5008 / 2889
Регистрация: 18.12.2017
Сообщений: 15,694
05.02.2020, 15:51 19
R_U_S_V, смотрите, здесь:
Цитата Сообщение от R_U_S_V Посмотреть сообщение
void repchar(char ch, int n)
ch - имя первого параметра функции, n - имя второго параметра функции

а в функцию передаются значения для параметров, например: repchar('R', 10); или с помощью предварительно инициализированных переменных
C++
1
2
3
char a='R';
int b=10;
repchar(a,b);
или можно переменным дать любые другие имена, в том числе и совпадающие с именами параметров:
C++
1
2
3
char ch='R';
int n=10;
repchar(ch,n);
когда автор приводил пример, вероятно он хотел обратить внимание, имя переменной не обязательно должно совпадать с именем параметра, вот и всё.
1
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
05.02.2020, 15:52 20
Цитата Сообщение от R_U_S_V Посмотреть сообщение
очему я не могу записать эти значения СРАЗУ в ch и n, которые объявляются в определении функции
Потому что main в душе не знает что у вас там в реализации функции
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2020, 15:52
Помогаю со студенческими работами здесь

Передача значений переменных из неосновных функций друг в друга
Здравствуйте, есть 2 небольшие функции: void RC6_ENCRYPT(unsigned int* pt, unsigned int* ct) {...

Для чего используеться передача структурных переменных в функцию?
Вообщем прошу помощи. 1) Для чего используеться передача структурных переменных в функцию? Как...

Передача значений в функцию C++
Добрый вечер. Возникла такая проблема с лабой. Не могу корректно передать значение &quot;x&quot; к выводу в...

Передача значений из двумерного массива в функцию
Добрый день всем! Помогите девушке разобраться! Я пишу лабораторные по Си. Осталась последняя...


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

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

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