Функции в C++ для начинающих Несколько выражений на месте одного параметра

Сайт не является учебником по программированию. Это только небольшой авторский сборник информации в помощь начинающим программистам.
  • Только для старых компиляторов, не поддерживающим стандарт языка C++ (Turbo C++, Borland C++ 3.1)

    Есть в C++ такой момент когда начинающий может запутаться читая чужую функцию. Бывает в самой функции прописан один параметр, а в программе в функцию передается более чем один. Разумеется должен возникнуть вопрос: «Что за безобразие, почему так?»

  • Код C++ Несколько выражений на месте одного параметра

    Не знаю кому и когда такое надо, но возможность такая есть. Думаю не корректно говорить, что каждый такой элемент внутри функции обрабатывается как параметр. Насколько вижу я глазами новичка: В функцию как и должен, передается только один параметр, который обрабатывается функцией. За этот параметр передается крайний левый элемент из скобок. (value, value=…). Если изучать код дальше, то видно, что функция работает со ссылкой на то, что туда передается, значит то что я туда передаю при окончании работы функции поменяет свое значение в главной программе. (тема Ссылки в C++ для начинающих Поверхностное знакомство )

    После срабатывания функции, value поменял свое значение на то что рассчитала функция и дальше я коверкаю код таким вот способом, где внутри параметров вместо параметров выполняю обычное присваивание в этот value своего значения, причем переприсваиваю значение дважды. Это можно и нужно было сделать после описания функции, но было написано внутри.

    Возможно читающий посетитель этого блога встретит подобное написание программы и уже будет подготовлен к тому как правильно прочитать этот нелепый код. Мой совет — так не делать.

    Я пришел к тому что:

Несмотря на то что выглядит, что функция принимает несколько параметров, принимает она только столько сколько ей сказано и эти параметры идут первыми внутри скобок
Если функции сказано принять N параметров, а принимает она N+1 или больше, то то что входит за этот N параметрами как таковыми не являются

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

5 комментариев: Функции в C++ для начинающих Несколько выражений на месте одного параметра

  • Alexsandr говорит:

    Этот код не работает. Что может быть не так? Выдает ошибку
    [C++ Error] Unit3.cpp(21): E2227 Extra parameter in call to func(int &)

    Автор сайта отвечает:
    Это не констатация, а предположение.
    Возможно стандарт не пропускает(Вы буквально на днях мне задавали вопрос, VisualStudio у меня все еще под рукой нет)

    Все-таки этот код для старого компилятора, а компилятор компилятору рознь.
    Если я прав, то из короткого описания логично, что то, что непонятно зачем существует, да еще и способствует увеличению ошибок, использоваться не должно.

    Подобную ошибку читайте как: "Лишний параметр во время вызова функции"

  • Gen говорит:

    если в кодевлок переписать
    #include
    #include
    int func(int &N,int,int) //Параметр переданный в N будет обработан напрямую
    {
    N=N/2; //Делим переданный параметр в функцию пополам
    return N; //Возвращаем вычисленное значение
    }
    using namespace std;
    int main()
    {
    //clrscr();
    int value=100;//value будем передавать как параметр вовнутрь функции
    func(value, value=value/2, value=value*3); //Такой синтаксис допускается компилятором
    cout<<value<<endl; //Выводим value на экран
    //getch();
    return 0;
    }
    то работает,но выдает предупреждение
    1 1\main.cpp|13|предупреждение: операция ' value ' может быть не определен|
    а результат выдает верный.

    Автор сайта отвечает:
    предупреждение — не ошибка.

  • Gen говорит:

    #include
    #include
    почему то инклуды не правильно вставились.

    Автор сайта отвечает:
    потому что код надо в теги заключать.

  • Gen говорит:

    #include

    Автор сайта отвечает:
    и работать ваш пример будет, но он не относится к конкретному примеру статьи.
    Конкретный пример статьи работает в BC 3.1, но не должен работать в CodeBlocks.

  • Vladimir говорит:

    Попробовал данный код в MVS(Visual Studio) 2013.
    Компилятор однозначно не пропускает, пишет что данная функция не принимает столько аргументов

     

    Автор сайта отвечает:
    Этот код в нормальных компиляторах не должен проходить. Только для старых, которые были, когда стандарт языка С++ ещё не появился.

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     

Яндекс.Метрика

НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Демотиватор программирование на языке ада

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок