Присвоить предыдущему элементу массива значение переменной - C (СИ)
Формулировка задачи:
Присвоить предыдущему элементу массива p значение переменной yj и переадресовать указатель pv на этот элемент.
что не верно? *(pv-1)=yj;*pv--;
Решение задачи: «Присвоить предыдущему элементу массива значение переменной»
textual
Листинг программы
#include <stdio.h> int main() { int array[] = {1, 2, 3, 4, 5}; int yj = 7; int* pv = &array[1]; printf("%p\n", pv); // 0xbfa83838 // array[0] теперь равно yj *(pv - 1) = yj; // теперь pv указывает на array[0] *pv--; printf("%p\n", pv); // 0xbfa83834, как и должно быть (0xbfa83838 - sizeof(int)) printf("%d\n", *pv); // 7, как и должно быть return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявлен массив
array
с пятью элементами и переменнаяyj
со значением 7. - Указатель
pv
инициализирован адресомarray[1]
(второй элемент массива). - Выводится адрес
pv
(второй элемент массива) в форматеprintf(
%p\n, pv);
. - Значение
array[0]
присваивается переменнойyj
с помощью оператора индиректного обращения к массиву*(pv - 1) = yj;
. - Указатель
pv
инкрементируется на 1 (*pv++;
). - Выводится адрес
pv
(теперь он указывает наarray[1]
) в форматеprintf(
%p\n, pv);
. - Выводится значение
*pv
(теперь этоarray[1]
) в форматеprintf(
%d\n, *pv);
. - Возвращается 0, чтобы завершить программу.
В результате выполнения этого кода, значение
array[0]
будет равно 7, а значениеarray[1]
будет равно 2.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д