05.09.2016 Views

Стефан Р. - С++ Для чайников

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

*pintvar = 100. С не вызывает никаких проблем, поскольку C++ известно, что<br />

pintVar указывает на целочисленную переменную и приводит 100.0 перед присвоением<br />

к тому же типу.<br />

Jtefteqana цказшпелей<br />

Одним из путей использования указателей является передача аргументов функции.<br />

<strong>Для</strong> того чтобы понять всю важность этого метода, необходимо разобраться, как происходит<br />

передача аргументов функциям.<br />

Передача аргументов по значению<br />

Вы мсгли заметить, что обычно нельзя изменить значение переменной, которая<br />

передавалась функции как аргумент. <strong>Р</strong>ассмотрим следующий фрагмент кода:<br />

void fn(intArg)<br />

{<br />

int intArg = 10;<br />

//здесь значение intArg равно 10<br />

}<br />

void parent(void)<br />

{<br />

int nl = 0;<br />

fn(nl);<br />

// здесь nl равно 0<br />

}<br />

Функция parent () инициализирует переменную nl нулем. После этого значение<br />

nl передается в качестве аргумента функции fn (). В f n () переменной intArg присваивается<br />

значение 10. тем самым в fn() осуществляется попытка изменить аргумент<br />

функции. Поскольку в качестве аргумента выступает переменная nl, можно<br />

ожидать, что после возврата в parent () эта переменная должна иметь значение 10.<br />

Тем не менее nl остается равной 0.<br />

Дело и том, что C++ передает функции не переменную, а значение, которое<br />

в момент вызова функции находится в переменной. При вызове функции происходит<br />

вычисление значения передаваемого функции выражения, даже если это<br />

просто переменная.<br />

Обычно, экономя слова, многие говорят что-то вроде "передаем переменн<br />

х<br />

ФУ ИК Ц ИИ f n O "• На самом деле это означает, что функции передается<br />

значение выражения х.<br />

Передача значений указателей<br />

Указатель, как и любая другая переменная, может быть передан функции в качестве<br />

аргумента.<br />

void fn(int* pintArg}<br />

{<br />

*pintPrg = 10;<br />

void parent(void)<br />

{<br />

int r. - 0;<br />

Глава 8. Первое знакомство с указателями в C++ 93

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!