Помогите с указателями ! !
I understood most of the code but I am unclear on what the line ptr=-2 does to the overall code I mean does it change address of ptr or something ? #include <iostream> using namespace std; void processptr(int *ptr) { for(int i=4;i>2;i--) { (*ptr)*=i; ptr-=2; } } int main() { int numbers[]={2,4,8,10}; int *ptr=numbers+3; cout<<*ptr; cout<<'\n'; processptr(ptr); cout<<'\n'; for(int i=0;i<4;i++) { cout<<numbers[i]<<"@"; cout<<"\n"<<i; } return 0; }
Что я уже пробовал:
Я попытался запустить код и увидеть результат, но до сих пор не могу полностью понять код
Philippe Mori
И каков же выход... Вы ожидаете, что мы также попробуем программу, чтобы убедиться, что мы правильно ответили вам?
Поиск арифметика указателей в C и вы должны многое понять.
В вашем примере вы легко можете увидеть, что вы вызываете функцию с указателем на число 10 в массиве. Цикл начинается с i, равного 4, и умножает этот указатель на 4. На следующей итерации он умножит на 3 значение 2 пункта до того, как таким образом 4 * 3 = 12. И тогда все прекратится. Так что он должен напечатать 2, 12, 8, 40.
Ajmal RS
Большое спасибо, вывод, который вы получили, правильный, я не понимал, что изменение указателя тоже изменит массив, Ну что ж, думаю, я пойду изучать некоторые указатели