Я застрял в следующей проблеме указателя:
Скажем, у вас есть функция:
void Function (unsigned char *ubPointer)
{
ubPointer++;
}
int main (void)
{
unsigned char *PointerX;
Function( PointerX );
}
Я хочу, чтобы ++ отражался в PointerX, не объявляя его глобальной переменной.
Большое спасибо.
В C ++ передайте указатель по ссылке (и не забудьте указать тип возвращаемого значения для вашей функции):
void Function (unsigned char*& ubPointer)
// ^
{
ubPointer++;
}
Это не потребует каких-либо дальнейших изменений в коде вызова. При возвращении из функции, побочные эффекты на ubPointer
будет видно звонящему.
В C вы можете достичь эквивалентного результата, передав указатель на ваш указатель:
void Function (unsigned char** ubPointer)
// ^
{
(*ubPointer)++;
// ^^^^^^^^^^^^
}
Это потребует от вас изменения способа вызова вашей функции:
int main()
{
unsigned char* p;
Function(&p);
// ^
}
Или, если вы хотите сделать это в стиле C
void Function (unsigned char **ubPointer)
{
(*ubPointer)++;
}
так как
Function (unsigned char **ubPointer)
{
ubPointer++;
}
будет увеличивать адрес, указанный в.