Пока я учился C (я очень к этому знаком), я играл с указателями. Здесь вы можете увидеть мой код:c: при использовании указателя в качестве входа в функции, увеличивающей значение указателя, с помощью * pointer ++ не работает
#include <stdio.h>
void change(int *i)
{
*i += 1;
}
int main()
{
int num = 3;
printf("%d\n", num);
change(&num);
printf("%d\n", num);
return 0;
}
Моей цель состояла в том, чтобы заменить приращение значения Num без переназначения его следующим образом:
num = change(num);
Вот почему я проезжал ячейку памяти из num
с помощью &
: поэтому он может использоваться как указатель. Перед этой версией все в коде было одинаковым. Единственное, что было иначе, это то, что я сказал *i++;
вместо того, чтобы сказать *i += 1;
Теперь мой вопрос, почему я не могу сказать *i++
?
Приоритет оператора: постфиксное увеличение имеет более высокий приоритет, чем унарное косвенное, имеет более высокий приоритет, чем составное присвоение. – EOF
Быть немецким не является оправданием для плохого английского! – Olaf
@Olaf Ich bin Deutscher и до сих пор проблемы с англичанами. – Michi