Си++: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
 
Нет описания правки
Строка 1:
== О документе ==
 
Пока что просто некоторая информация, касающаяся Си++. Возможно, кто-нибудь когда-нибудь это дополнит и сделает учебник.
Строка 5:
Пожалуйста, не удаляйте отсюда материал. Он примерно соответствует курсу ФИТ НГУ по соответствующей теме.
 
== Основные отличия Си++ от Си ==
 
=== Использование ссылок ===
 
==== Передача параметров в Си ====
 
В Си аргументы всегда передаются единственным образом, часто называемым «передачей по значению». Например, пусть есть функция
Строка 13 ⟶ 15 :
x = 17;
}
Мы её можем вызывать любым из следующих способов:
void main () {
int z = 5;
foo (z);
foo (z + 1);
foo (125);
}
Разумеется, ни один из этих вызовов не изменяет значения переменной <tt>z</tt>. (Для последний двух вызовов это совершенно естественно, а вот в первом случае вы могли засомневаться.)
 
Что же делать, если мы хотим дать возможность функции <tt>foo</tt> изменять значение переданной переменной? Мы можем передать ей не саму переменную, а указатель. Перепишем предыдущий пример так:
void foo (int *x) {
*x = 17;
}
void main () {
int z = 5;
foo (&z);
/* остальные варианты больше не имеют смысла */
/* z теперь равно 17 */
}
 
==== Что такое ссылка ====
 
В Си были просто переменные и указатели. В Си++ этот список пополнился новой разновидностью, ''ссылкой''. Ссылка — это штуковина, которая выглядит как обычная переменная, но на самом деле является указателем.
 
Использование ссылок очень похоже на использование указателей, только вместо ''звёздочки'' «<tt>*</tt>» нужно писать ''амперсанд'' «<tt>&amp;</tt>».