Передача значений указателей...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. Становимся функциональными программистами