#41. Оператор return. Вызов функций в аргументах | Язык C для начинающих

Поділитися
Вставка
  • Опубліковано 24 гру 2024

КОМЕНТАРІ • 26

  • @trimo1120
    @trimo1120 Рік тому +4

    Хороший видеоурок, спасибо!

  • @andredru4278
    @andredru4278 11 місяців тому +3

    Спасибо. Великолепно!

  • @olegkomlev
    @olegkomlev 10 місяців тому +2

    По поводу параметров функции. Действительно, нужно все данные, с которыми работает функция, стараться передавать ей в параметрах, а не через глобальные сущности. Но иногда удобнее использовать глобальные константы. Например, если все вычисления в программе должны идти с определенной точностью, можно в каждой такой функции иметь параметр, задающий эту точность. Но если точность везде одинакова, то лучше завести глобальную константу, задающую такую точность, а во всех функциях использовать эту константу, а не параметр. Глобальные сущности принято называть длинным осмысленным именем, лучше заглавными буквами, чтобы подчеркнуть ее глобальную роль. Например, EPS или даже DEFAULT_EPS.
    Другой пример. Например, имеем программу, в которой есть игровое поле - скажем, двумерный массив символов. Одна функция это поле очищает, другая на поле что-то расставляет, третья что-то ищет, отдельная функция выводит поле на экран и т.д. Но если это игровое поле только одно во всей программе, то можно исключить его из параметров и сделать обращение из всех функций глобально. При этом следует назвать этот массив длинным осмысленным именем, например BOARD или GAME_BOARD. Но если есть несколько таких полей - например, нескольких игроков, то при использовании глобальных переменных пришлось бы выполнять присваивание массива глобальной переменной перед вызовом функции и присваивание результата после. Ясно, что тогда лучше передавать поле, с которым в данный момент работает вызываемая функция, в качестве параметра этой функции.

  • @jamjam3337
    @jamjam3337 Рік тому +3

    спасибо!💪👍👏

  • @AlSlonex123
    @AlSlonex123 Місяць тому +1

    На 11:30 строка 11 копирует логику сравнения из строки 5.
    Лучше было бы функцию min_3 (в частноси 11ю строку) переписать в виде:
    9: {
    10: double min_ab = min_2(a, b);
    11: return min_2(min_ab, c);
    12: }
    В итиге реализация логики сравнения была бы локализирована в строке 5.

  • @РусланКарнеенко
    @РусланКарнеенко 10 місяців тому +2

    Спасибо

  • @ГубкаБоб-р8ъ
    @ГубкаБоб-р8ъ Рік тому +4

    Спасибо! Очень нравится ваш стиль преподавания и подачи материала. Интересно у вас нет своих книг?
    Я бы с удовольствием купил "Изучаем Python. Балакирев С." или "Изучаем C. Балакирев С."

    • @selfedu_rus
      @selfedu_rus  Рік тому +2

      Спасибо! Есть текстовые варианты видео proproprogs.ru

    • @ГубкаБоб-р8ъ
      @ГубкаБоб-р8ъ Рік тому

      @@selfedu_rus Да, конечно я читаю ваш сайт и материалы на нём. Он закреплен у меня среди 10-ти достойнейших ресурсов на панели в Хроме.

    • @ГубкаБоб-р8ъ
      @ГубкаБоб-р8ъ Рік тому

      @Vladimir Astrelin 100%

  • @serezhanepochatykh6065
    @serezhanepochatykh6065 Рік тому +1

    Сергей, добрый день. А вы не хотели бы добавить в плейлист по C++ то, что выходит из тем за рамки базовых концепций? Например, новые фишки в последнем стандарте C++? Или вообще что есть такого в каждом стандарте, чего нет в предыдущем, начиная с C++11? Также, например, вариативные шаблоны и где их использовать можно в проектах, работе?

  • @i_safronov
    @i_safronov 5 місяців тому +1

    При компиляции 1:57 возникла ошибка: main.c:(.text+0x37): undefined reference to `pow'
    collect2: error: ld returned 1 exit status. Решение: нужно перейти в файл settings.json и добавить аргумент для компилятора в блоке "c" -lm. Пример: "c": "cd $dir && gcc -std=c99 $fileName -lm -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

  • @Kellermans-p5r
    @Kellermans-p5r Рік тому +2

    Благодарю! Очень годный контент и стиль! Сереж, а не планируете уроки по SQL?

    • @selfedu_rus
      @selfedu_rus  Рік тому

      Спасибо! Уже есть: ua-cam.com/video/TwnCXdCa8qg/v-deo.html

  • @ИгорьК-т1ш
    @ИгорьК-т1ш Рік тому +2

    Можно еще так сократить:
    double sq4_x(double x)
    {
    return x < 0 ? NAN : pow(x, 0.25);
    }

  • @Green_place23
    @Green_place23 11 місяців тому +2

    Прошу вас уточнить, как функция возвращает не вещественное число, а символы NAN?

    • @selfedu_rus
      @selfedu_rus  11 місяців тому

      Символы NAN мы видим на экране, а соответствуют они определенным образом закодированным битам вещественного числа. Каким именно, нужно почитать. Никогда не интересовался ))

    • @alexishome4322
      @alexishome4322 4 місяці тому

      Тоже интересно, как можно в типе(переменной) вернуть nan. Может nan это тоже тип, но тогда как функция его возвращает если возвращаемый тип уже определен.

  • @Tiranitos
    @Tiranitos Рік тому +1

    Спасибо за уроки. На мой взгляд слишком замудренные вы используете примеры в теле функций. 4-я степень и т.п.

  • @trimo1120
    @trimo1120 Рік тому +1

    void print_even_x(int x)
    {
    return (x & 1) ? void : printf("x = %d
    ", x); // Битовые операции (люблю их)
    }

  • @smishnoy-r6u
    @smishnoy-r6u 2 місяці тому

    не единого слова не понял

  • @renigat_tv9051
    @renigat_tv9051 Рік тому +1

    Давайте лайки до 100 догоним

  • @ДмитрийСмирнов-л6э3л
    @ДмитрийСмирнов-л6э3л 11 місяців тому +1

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

    • @selfedu_rus
      @selfedu_rus  11 місяців тому

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

    • @ДмитрийСмирнов-л6э3л
      @ДмитрийСмирнов-л6э3л 11 місяців тому

      @@selfedu_rus да я понимаю это, скорее всего это особенность компилятора .