Пока без указателей. Вы говорите "Число байт вернется корректно". То есть даете функции указатель на число байт, и принимаете возвращаемое значение числа байт? число_байт = FUN( (int *) &число_байт ); Имхо это совсем ненужный return из функции, число байт обновится и без return'а. А возвращать надо обновленный указатель. Итого: указатель = FUN( (int *) указатель, (int *) &число_байт ) Вот теперь оба значения обновятся.