Передача параметров в функцию по значению. Параметры функции. Передача аргументов в функцию. #34
ฝัง
- เผยแพร่เมื่อ 4 ก.พ. 2025
- Понравилось видео или оказалось полезным? Подпишись!
Передача параметров в функцию по значению. Параметры функции. Передача аргументов в функцию. #34
Уроки по программированию
Наша группа ВК smplcode
Подписывайтесь на канал / @simplecodeit
Инкремент и декремент. Постфиксный и префиксный. Пример. Синтаксис. C++ для начинающих. Урок #9.
• Инкремент и декремент....
Низкий поклон автору. Пожелание: хотелось бы видеокурс с большим количеством домашних заданий и их разборов.
Отличное пожелание ,присоединяюсь!!!
Да, пожалуйста, хотелось бы видеть больше домашних заданий с их дальнейшим разбором. ОГРОМНОЕ СПАСИБО!
@@GattoPlayприсоединяюсь к вам,также хотелось бы увидеть создание простеньких игр с их объяснением)
@@shamistanaliyev5678 Создание игр, с освещением и какой-нибудь графики с освещением, физикой тел, требует умения работы с геометрией, про создание моделей и текстур даже говорить не буду
Просто в интернете найдите сайты с заданиями и там набивайте руку
Наконец кто-то сумел доступным языком рассказать про кастомные функции. Крутой курс, за такое качество положено брать большие деньги, а тут он бесплатно лежит
отличная подача, нету воды вообще, все четко по делу.
Спасибо, что делишься знаниями, ты объясняешь все ОЧЕНЬ понятно и легко. Ты лучше всех моих преподов. С твоими объяснениями все стало намного легче и понятней.
Да, отличное дополнение по приоритетам инкремента к Уроку №9! Благодарю! И, наконец, именно тут дошло про то, как действия в коде выполняются справа налево.
А разве не наоборот?
Спасибо большое, самое то для повторения перед экзаменами)
Пожалуйста!
@@karwel38 я вот сдал благодаря тому что подруга присела на мозг перед экзом повторить С++, как всегда на экзамене у меня отключился мозг и я не смог сделать простую программу, зато, зато я сдал теорию, где написал несколько примеров из этого курса, правда оценка низкая, зато проходная)
Очередное спасибо за урок, отдельное спасибо за 1080!
4:50 - Что происходит при вызове функции?
5:45 - Что происходит при передаче переменной а в функцию?
7:15 - Запускаем в отладчике
10:10 - Как вернуть результат (инкремент переменной а) из функции?
м, ПаСыбА
Автор ответьте пожалуйста
Господи, Сергей. я в 5м классе, совершенно ничего не знал, но теперь знаю благодаря тебе. Спасибо, Сергей.
Ну как продвижение?
@@mastermaths4929 ну он уже в 6м классе:)
Ку, как дела в 6?
@@cancent бля я на третьем курсе
@@poliglice заебист тебе?с 5 класса за год на 3 курс, как успехи?
#функции #SimpleCode #урокипрограммирования
честно говоря, я никак не могу понять, почему там 1, а не 2
@@tuparelax7419 Переменная "а" одной функции и пременная "а" другой функции - это две разные переменные, никак друг с другом не связанные. Представь, ты посылаешь "1", как значение, в другую фунцию, внутри которой происходит суммирование. А дальше ты свою же "1" выводишь на печать, а не результат суммирования.
Поэтому правильнее было бы сначала a = Foo(a); и потом только cout
благодаря Вашим урокам я хоть могу учить программирование и Вы довольно таки удобно понятно объясняете
Хоть я и программировал, но я тоже думал. Что должно быть увеличится на 1. Спасибо за уроки.
Ты так преподаёшь буд-то работаешь в ВУЗЕ лектором по программированию, но у тебя зарплата миллион долларов и тебе не нужны никакие взятки, ты любишь своих учеников и твоя высшая цель научить безвозмезно лучшим способом. Таких бы учителей....
учителя в шараге обучают паскалю, а тут молодой человек с++ понятным языком говорит, респект
@@luathekartoshka7547 У меня в универе C#
Но нас учат говнокод, а в придачу учат очень старому г*вну
А потом все удивляются, откуда столько говнокода(
@@nyashuka такое чувство, что мы в одном вузе
Волшебство просто, префиксный инкремент озадачил меня, я то поставил на паузу и почти всё сделал правильно, просто поставил а++; перед return a; что чуть сложнее, вообще подобные хитрости очень интересны, ибо всегда хочется сократить код до минимума.
Спасибо! Хорошие у вас уроки! Хорошо объясняете. Вижу у вас новая тематика, учите народ писать на С#, продолжайте в том же духе, я думаю, что у вас и в этой области все получится. А я пока плюсы изучу!
Спасибо за уроки, в некоторых моментах очень детальное описание помогает вникнуть даже новичку
* Самые понятные, видео уроки по c++, на всём (RU) youtube *
+
Нравится. Жму лайки регулярно. Огромное спасибо за Ваши уроки. Очень продуктивно и информативно
Спасибо за Вашу роботу.
Я знаю, что такое передача по значению, но чем больше смотрю, тем больше нравится. Особо5 спасибо за отладчик.
Ахах Спасибо огромное я даже правильно ответил благодаря первому ролику))) никак не мог понять эту тему в колледже, ибо учитель у нас так себе её объяснил, а у тебя с первого ролика все понял, спасибо большое и за настроение)))
спасибо! освежил в памяти инфу
Вот этот материал оказался чуть посложнее для восприятия, посмотрим следующий ролик, думаю, разберусь окончательно)
Как приятно на душе, когда правильно угадал, даже нет, сам догадался, что там будет 1, а не 2, вот прям бальзам на душу
кстати, а ты не хотел бы сделать курс по алгоритмам и структурой данных?
я бы с удовольствием посмотрел, мне очень нравится как ты объясняешь, и было бы топ
Спасибо огромное за урок!
Не знаю какой там будет вывод, раньше пробовал себя в программировании, но забил, но думаю так: Скорее всего, так как мы в main создаём обычную локальную переменную, то у функции foo не будет доступа к этой переменной, у неё есть доступ только к тем данным, что мы в неё передали, или уже в ней объявили. Тоесть в функции можно объявлять любые переменные, вне зависимости, есть ли они в main-е, ведь они не могут взаимодействовать с переменными друг друга, у них только свои локальные переменные. Соответственно так как функция ничего не возвращает, то функции передастся значение переменной а, она выполнит свою работу, но ничего не вернёт, а значит в переменной а в main ничего не изменится, и программа просто выведет 1.
2, но так как вы предлагаете предугадать, то скорее всего 1.
автор красавчик, мой респект тебе
Отдельное спасибо за уроки
Результаты размышлений про то что выведет cout
Блин.
:D
Спасибо за ваш курс
Огромное спасибо за видео. Позволю себе процитировать предыдущего оратора: * Самые понятные, видео уроки по c++, на всём (RU) youtube *))) . От себя добавлю: Хотелось бы побольше ДЗ.
Очень помогло 👌🔧
Лайкос😄
Аргументы - переменные, существующие в зоне видимости функции, поэтому при вызове мы передаём не нашу переменную, а её значение т.е присваиваем переменной функции значение. В данном случае значение переменной a в точке входа не изменится, ведь изменили мы значение переменной функции, а не точки входа
Спасибо за уроки, привет из БГУИР-а :)
Запись от 01.06.2020 года: Как же меня за***ала писанина конспектов для технаря и военкомат. Я вырвался!!! Спасибо за урок, хоть и меня тянут много "факторов" вниз, приходиться превозмогать и побеждать самого себя для решения проблем и задач. Спасибо!!!)
Как успехи?
Спасибо за урок!
Спасибо, очень понятно!
Спасибо большое за твои видосы
2:20
Так как у функции возвращающее значение "void", то она не будет возвращать "a++", и в итоге я не знаю что это даст, но знаю, что "a" не увеличится
Иными словами, не имеет значения, как называются эти две переменные. В данном случае названия просто совпали ("a"). Но могли быть "a" и "b", например.
Почему префикс и постфикс не работают со счетчиком for? Если бы например была бы переменная "a=1", и мы бы написали в функцию "for(;a
for(; a
Объявляем переменную a со значением 1 => Передаём переменную a в ф-ию => В области видимости ф-ии объявляется переменная a со значением 1 => Выводится переменная a в области видимости ф-ии main
Уроки хорошие, наверное самые лучшие в Ютубе. Но как обычно многие программисты часто путают понятия. В данном уроке автор перепутал понятия аргумента и параметра функции. То что находится в скобках при объявлении функции называется параметрами, а то что в теле основной программы присваивается параметрам при вызове функции аргументами. Т.е. переменная "а" в объявлении функции - параметр, при вызове из main функции этой переменной присваивается аргумент - значение переменной "а" или "value" из main.
пофиг, лучше тогда все термины на английском.
Возвращаемое значение функции можно сразу вывести на экран, без присваивания переменной value (если мы не планируем сохранять результат работы функции):
cout
После слов: "...но я вас немного огорчу..." не хватало грустной мелодии!
Мне кажется, что правильнее сказать в этом видео, что в данном случае в функцию передается не сама переменная, а только ее значение. Сама же переменная остается такой, какой была. А функция просто создаёт новую переменную, приравнивая её значение к значению той переменной, которую мы указали в параметрах функции при её вызове.
Наверное... ещё проще говоря, аргумент в параметрах функции,
например func(int a)
обозначается для использования этого обозначения внутри этой самой же функции func. Это как идентификатор для принимаемого значения
При передаче аргументов по значению внешний объект, который передается в качестве аргумента в функцию, не может быть изменен в этой функции. Нашел такую инфу в интернете, а разве в уроке при помощи инкремента мы не изменили ее? Или тут подразумевается, что исходное значение не меняется int a=1?
короче, предсказываю, что ты просто так по приколу отправил *а* в функцию и функция такая
*спасибо, теперь у меня есть число увеличенное на 1... и что мне делать с ним? ничего? окей*
Спасибо! Подписался!
Я угадал в чем проблема, но 1. Чуть позже догадался что наверное функцию для вывода на писать так:типа переменная = функции (это логично ибо получается что в обратном порядке оно присвает функции значение ну кагбы копирует наверное в данном случае, но думаю понял)
И ещё была проблема с постфиксным инкрементом (до этого сам догадался), но не знал что с постфиксным проблемы такие будут \. _. /
Как приятно когда смекалочка работает в час ночи хех (не зря почитал чо она вообще возвращает Блинннннн ) (просто как я понял возвращение это скорее сохранение типа "алгоритма" который должен проигрываться других действиях)
Спасибо!
Надо кншн практика с этим хех.
Так из войда можно вернуть значение после того как выполнится функция?
Функция выведет a=1, поскольку функция увеличивает значение переменной "a" в своем теле, но не возвращает полученное значение в эту переменную.
Инкремент сработал на переменную внутри функции, неожиданно
👍
На 2:26 выйдет один, так как переменная а в foo() не связана с перемeнной а в main().
Я человек в программировании новый, но, мне кажется, что функция будет наращивать свое значение до тех пор, пока не закончится память. Либо просто прибавит единицу)
Ну, будет честно сказать что я распознал подвох, еще раз сел и подумал, и полагаю что так как мы не вернули значение a, то нам выдаст ту же единицу))
спасибо огромное)))
1 наверное. Мы объявили a внутри функции, инкремент в теле функции. Все выполняется внутри, наверное, с наружним не контактируя
1, потому что в выводе переменной написана не функция, а переременная, а функция не присваивает переменной значение, а работает единожды.
И что бы получилось 2 нужно было либо присвоить функцию переменной, либо в выводе написать эту функцию.
Спасибо!
Пожалуйста!
1, т.к. функция создаст локальную переменную.Ну в питоне было так, тут, думаю, также)
Изначально предполагал что выведит 2, но потом вспомнил прошлый урок, там для вывода тела функции (поправите если не прав) вы написали cout
value = Foo(value) - ошибка, слишком мало аргументов в вызове функции, с чем связано?
Чтобы к переменной ,,i,, прибавить 1 можно записать i++, а если прибавить 15 , тогда пишем : i +=15 . А возможно ли записать это в префиксном варианте ?
Ты путаешь инкримент и обычную арифметику.
Запись i += 15 такая же как и i = i + 15
Т.е. сначала выполняется выражение справа, потом идёт присваивание полученного результата
Думаю, в консоли будет 1. Предполагаю, что вопрос связан с классами памяти, областью действия идентификатора и т. п. Читал, но пока не очень разобрался в вопросе.
Я думаю, что ничего с переменной не произойдет, так как в функции изменяется локальная, а не глобальная переменная, для глобальной наверное нужно отдельно прописать ее в область видимости или что-т типо того
привет из 2023. Спасибо большое!
спасибо большое
Честно, задумался сначала, что это не будет работать. Потому что, в коде дважды объявлена переменная "а", в каждой функции. В функции main переменной "а" присвоено значение "1", оно то и будет выводиться на экран. Т.к. в функции foo не присвоено значение переменной "а" (в функции foo стоит лишь инкремен, для работы которого нужно какое нибудь значение, а его нет), то при обращении, в функции main к функции foo, мы ничего не получим. Наверно так, хотя, cout стоит только в функции main, может поэтому выводит только переменную "а" из функции main. Сейчас посмотрим.
Не угадал)))))))
интересно что value и int a -- разные переменные с разными названиями , но программа воспринимает "а" как "value" . видимо ей важен порядок параметра в скобочках. и ещё это объясняется тем похоже что в мейне одни переменные а в функции "фу" уже другие
Подозреваю что функция может вернуть неск значений которые можно подставить в реторне как и принять несколько параметров. И наверно ассоциировать она их будет с теми переменными у себя в зависимости от порядка введёных значений в скобках.
переменная a увеличится на 1?
Останется то же самое значение, нужно передать адрес переменной или указатель на неё
Честно говоря предполагал что будет 2, ошибся. 1)
клёво че продвигаюсь как пароход
будет равна единице, т.к. ф-я ничего не возвращает, а область видимости инкремента - локальная
будет бесконечно цифры ?
2:28 - скорее всего переменная a увеличится на 1
Thank
с каждым уроком все меньше и меньше просморов, как же много людей начинают, но как мало доходят до конца...
И в последнем видео миллион просмотров😂😂 не до терпели до конца
а как исправить с помощью указателей?
9:20 Автор урока только что продемонстрировал один из принципов функционального программирования)
куда я могу обращаться если возникнут какие-то вопросы ?
Думаю, что из-за того void функция. Так как она ничего не возвращает. + еще мы выводим а, должно быть выведена функция void.
Я не понимаю, если функция увеличивает свою переменную а, то почему тогда в отладчике она было 2, а потом резко 1?
Почему ты используешь void main(), а не int main()?
Так, как наши программы работают по принципу сферических коней в вакууме, без привязки к системе и другим программам, то функции main не обязательно что-то возвращать. И старый компилятор даже не выводил предупреждений.
--- Но это не точно) ---
В новых версиях MS VS 2019 решили что это все таки не правильно, и рекомендуют использовать main с возвращаемым значением, означающим результат работы. В дальнейших уроках (в 70-х где-то), к которым я еще не дошел, автор обьяснит разницу.
@@Сергей-т9д7в спасибо
Вы пишите foo(int a)
{a++} но так нигде не указали чему изначально равно а. Почему нет ошибок, с чего компилятор решил что а=0?
Он передаёт в эту функцию значение value
И почему a=0? Он передавал единицу
@@ColinTheStudio: Чел, не суть важно как называется переменная которую передаем в функцию "value", "a" или "chel", важно чтобы тип данных был одинаковый. В данном случае "int".
Почему "а=0", а чему она должна быть ровна в самом начале программы? Объявив функцию и переменную, ты тем самым создал ячейку в памяти для целочисленной переменной "а". В этой ячейке ничего нет, она пустая, там мусор. Когда ты запускаешь отладчик, компилятор сам прописывает туда ноль, если ты будешь идти пошагово, то увидишь сначала ноль, затем мусор, это в реальности то, что хранится в ячейке целочисленной переменной "а", на третьем шаге появится значение переменной "value" в переменной "а". Дальше, читай мой пост написанный выше.
спасибо
2:20 Будет 2
Изменено: Оказалось нет))
странно что никто не ругается что а инициализировали но не присвоили значение, видимо исключение для функции не мейн. Если я не путаю с каким то другим языком где критично чтобы присвоили значение.
То есть мейн это наверно как ствол, а другие функции это как ветки, которыми может пользоваться мейн? какова же структура с++ на макроуровне? Смотрим дальше)))
Я сделал глобальную переменную, и у меня сразу было 2. Но теперь я знаю как сделать иначе.
if ( answer == 2 ) {
std :: cout
pause(2.31sec) а будет бесконечно плюсоваться
ошибся (
я был уверен что не изменится, но думал, потому что нет return
даже с return будет 1, для 2 нужно было бы a = Foo(a); ну и еще тип функции int а не void.
2:25 в консоль выведет 1
1-
переменная основной функции)
2:25 Думаю будет 2) но щас увидим.
2:24 переменная "а" не изменится