Références en C ++





ссылки в C++, ссылочные переменные с++

В наших предыдущих статьях, мы уже упоминали о том, que les paramètres peuvent être transmis à la fonction significative ou le pointeur. Il a travaillé lors de l'écriture des programmes en C. En C ++, il est possible de passer des paramètres à la fonction de lien. Рассмотрев пример из этого урока, вы заметите, что применять ссылки удобнее чем указатели.

Ссылкаэто альтернативное имя переменной (её псевдоним, иными словами). Когда функция принимает параметр по ссылке, имя параметра становится псевдонимом переменной, которую мы передаём в функцию. Такой метод передачи данных позволяет функции работать со значениями переменных, которые передаются в неё, а не с копиями этих переменных.

Определяя функцию, чтобы указать, que le paramètre est une référence, il est nécessaire d'ajouter le nom d'une esperluette &.

Recueillir l'exemple suivant, et tout devrait être clair:

Commençons par la fonction changement(). Appel en ligne 17 source, передаем в неё переменные по значению. Функция благополучно создаст копии этих переменных, запишет в них данные и, завершая своюнелегкуюработу, уничтожит эти копии. В итоге никаких изменений с передаваемыми переменными не произойдёт.

Теперь посмотрите на определение функции changeRef(), в которую параметры передаются по ссылке – lignes 45 – 49. Comme mentionné ci-dessus, мы использовали & , чтобы сообщить компилятору о том, что принимаемые параметрыэто ссылки. Внутри самой функции мы обращаемся к ссылкам, как к обычным переменным. Autrement dit, nous ne devons pas appliquer l'opération de déréférencement, если надо изменить значение переменной:

ссылки в C++, ссылочные переменные с++

А вызывая эту функцию из главной (rangée 21), нам не надо, при передаче переменных, применять операцию взятия адреса (тот же & , но с другим подтекстом), как это необходимо делать при передаче по указателю. Le résultat de la fonction verra, afficher les valeurs des variables sur l'écran. Les valeurs des variables modifiées avec succès.

enfin – pointeur de transmission. Directement à déterminer changePtr() – lignes 51 – 55. Il y a quelque chose, чего мы не использовали при передаче по ссылкеразыменование указателей для изменения значений переменных:

ссылки в C++, ссылочные переменные с++

Так как функция должна принять переменные по указателю, а указатель хранит адрес, то при вызове (rangée 25) передаём в неё адреса переменных:

ссылки в C++, ссылочные переменные с++

Le résultat du programme:

ссылки в C++, ссылочные переменные с++

Мне не совсем хочется нагружать вас какой-то дополнительной информацией о ссылках. Они чаще всего применяются именно для передачи параметров в функцию. В роли параметров могут выступать переменные, tableaux (это нам знакомо). Но что более важнопо ссылке в функцию передаются объекты структур и классов. Придет время и мы поговорим об этом.

la seule, что касается синтаксиса, если вам понадобится объявить ссылку в программе, то ее необходимо сразу инициализировать (показать для какой переменной она создана). par exemple:

ссылки в C++, ссылочные переменные с++Так в программе мы можем использовать имя ссылки для последующего обращения к данным, которые хранит aaa. Это если например кто-то до вас написал код и дал название переменной aaa. Этот программист знает, что она хранит количество ящиков. А вы, для своего удобства, дали этой переменной псевдоним amountOfBoxes и используете это новое имя, дописывая какой-то новый код в программу.

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




Abonnez-vous à de nouveaux articles sur notre site un avis:


Je suis d'accord pour recevoir des messages de purecodecpp.com sur mon e-mail

date
page
Références en C ++
évaluation
5

5 réflexions sur "Références en C ++

  1. Ссылкаэто альтернативное имя переменной, ИМХО больше тут пояснять нечего. Переменная одна, имен несколько. По любому имени с переменной можно как угодно работать. В случае со ссылками в аргументах функций тоже самое, просто альтернативное имя переменной будет видно внутри функции.

    Ну и пару примеров я бы добавил.

    inutilement. aiguille – это тоже переменная (просто хранит адрес объекта), то в функцию можно передавать ссылку на указатель например
    void foo(int &*arr);
    Ну типа того.

    И еще пример, есть 2 fonctions:
    void foo(int *a);
    void bar(int &une);
    Первая принимает ссылку на объект, deuxième- aiguille.

    Где-то в программе (например в функции main есть объект:
    int était = 123;

    Если надо передать его в первую функциюто мы должны получить адрес объекта:
    foo(&était);
    Во вторуюможно просто передавать, при этом внутри функции будет использовать альтернативное имя объекта
    bar(était);
    Если нам надо будет определить указатель на объектто он тоже должен инициализироваться адресом:
    int *p = &était;

    Внутри первой функции с объектом работают как обычно (ведь у нас просто есть альтернативное имя):
    void foo(int &une) { a = 456; }

    Во второй функции мы имеем указатель, поэтому вынуждены разыменовывать его для обращения к объекту:
    void bar(int *a) { *a = 789; }
    // если a – aiguille,
    // la (*une) – objet,
    // et (&(*une)) – адрес объекта Скобочки можно убрать, поставил для ясности (они отражают приоритеты).

  2. Ссылкидостаточно неприятное для начинающих понятие в C++ (хотя совершенно естественное даже для начинающих в Java или Python).

    Для начинающих можно сказать так (хотя это и не совсем точо):
    ссылка на переменнуюэто в точности то же, что и указатель на неё, но к этой ссылке, в отличие от указателя, нельзя применять адресную арифметику (+, -, ++, –).

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

    1. Oleg, отлично что Вы уделяете внимание нашим статьям и делаете важные заметки к изложенному материалу. Спасибо и от админа сайта и, думаю, от посетителей )

    2. Ни один начинающий тебя не понимает. Твои объяснения совсем непонятны, следующая статься твоя и понять ее очень сложно, impossible. А вот эта статья очень легка к восприятию. Не надо больше статей как Указатели на функции

      1. Что значитни один”? Не понимают только самые тупые ;-) … остальные хоть что-то, да понимают.

        programmation – это вообще очень не простая инженерная дисциплина, и объяснять еёна пальцаневозможно и вредно так же, comment, par exemple, матанализ или начертательную геометрию.

        И освоить программирование смогут только те, кто будут много и упорно практиковаться и самостоятельно писать код.

        P.S. А от обучения на уровне объясненийдважды два, детки, получается иногда четыре, если не возражаете” – никто и ничему не научится, возникнет только иллюзия чтоя тоже чему-то там учился”.

Laisser un commentaire

Placez le code dans les balises: <pre class="lang:c ++ décodage:true ">VOTRE CODE</pré>