Передача значений указателей...112
Указатель, как и любая другая переменная, может быть передан функции в качестве аргумента.
void fn( int* pintArg )
{
*pintArg = 10 ;
}
void parent( void )
{
int n = 0 ;
fn( &n ) ; /* Так передаётся адрес n */
/* теперь n равно 10 */
}
В этом случае вместо значения n функции fn( ) передаётся адрес этой переменной. Чем отличается передача значения переменной от передачи значения указателя на переменную, станет понятно, если рассмотреть присвоение, выполняющееся в функции fn( ).
Предположим, что n находится по адресу 0x102. В этом случае функции fn( ) передаётся аргумент, равный 0x102. Внутри fn( ) присвоение *pintArg = 10 выполняет запись целого значения 10 в переменную типа int, которая находится по адресу 0x102. Таким образом, нуль в переменной n заменяется на 10 , поскольку в данном случае 0x102 и есть адрес переменной n.
_________________
112 стр. Часть 2. Становимся функциональными программистами
Больше книг — больше знаний!
Заберите 20% скидку на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ