Увеличивать значение указателя при отправке в качестве параметра

Я застрял в следующей проблеме указателя:

Скажем, у вас есть функция:

void Function (unsigned char *ubPointer)
{
ubPointer++;
}

int main (void)
{
unsigned char *PointerX;

Function( PointerX );
}

Я хочу, чтобы ++ отражался в PointerX, не объявляя его глобальной переменной.

Большое спасибо.

4

Решение

В C ++ передайте указатель по ссылке (и не забудьте указать тип возвращаемого значения для вашей функции):

void Function (unsigned char*& ubPointer)
//                           ^
{
ubPointer++;
}

Это не потребует каких-либо дальнейших изменений в коде вызова. При возвращении из функции, побочные эффекты на ubPointer будет видно звонящему.

В C вы можете достичь эквивалентного результата, передав указатель на ваш указатель:

void Function (unsigned char** ubPointer)
//                           ^
{
(*ubPointer)++;
//  ^^^^^^^^^^^^
}

Это потребует от вас изменения способа вызова вашей функции:

int main()
{
unsigned char* p;
Function(&p);
//       ^
}
13

Другие решения

Или, если вы хотите сделать это в стиле C

void Function (unsigned char **ubPointer)
{
(*ubPointer)++;
}

так как

Function (unsigned char **ubPointer)
{
ubPointer++;
}

будет увеличивать адрес, указанный в.

0

По вопросам рекламы [email protected]