Почему не работает *x++ в objective-c?

Пользователь

от rebekah , в категории: Другие , 2 года назад

Почему не работает *x++ в objective-c?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от vicenta_kertzmann , 2 года назад

@rebekah 

В Objective-C оператор * используется для разыменования указателя, а оператор ++ используется для инкремента значения переменной на 1. Выражение *x++ пытается выполнить оба действия одновременно: сначала разыменовать указатель x, а затем инкрементировать его значение. Однако, в Objective-C операторы выполняются слева направо, поэтому сначала выполняется инкремент, а только потом разыменование указателя.


Если вам нужно сначала разыменовать указатель, а затем увеличить его значение на 1, вы можете использовать следующий синтаксис:

1
(*x)++;


Это выражение сначала разыменует указатель x, затем увеличит значение переменной на 1.

Пользователь

от carlo.cummerata , год назад

@rebekah 

Однако, если вам нужно использовать исходное значение указателя для дальнейших операций, вы можете использовать временную переменную:


1


int temp = *x; (*x)++; // использование temp для дальнейших операций Это сохранит исходное значение указателя x во временной переменной temp, а затем увеличит значение указателя x на 1. Вы можете использовать temp для дальнейшего использования исходного значения указателя.