В оперативной памяти вектор int Х[10] расположен, начиная с адреса B7F0. Какие значения примут выражения - C (СИ)
Формулировка задачи:
В оперативной памяти вектор int Х[10] расположен, начиная с адреса B7F0. Какие значения примут выражения: а) х+1; б) х+5; в) х-4? Использовать указатели.
как это реализовать, кто подскажет?
Решение задачи: «В оперативной памяти вектор int Х[10] расположен, начиная с адреса B7F0. Какие значения примут выражения»
textual
Листинг программы
#include <stdio.h>
#define N 10
int shiftedAddress(int *X, int shift, int *X0)
{ return X-X0+shift;
}
int main()
{ int X[] = {1,2,3,4,5,6,7,8,9,10};
int address = 0xB7F0;
printf("\nX = %X", shiftedAddress(X, address, X));
printf("\nX+1 = %X", shiftedAddress(X+1, address, X));
printf("\nX+5 = %X", shiftedAddress(X+5, address, X));
printf("\nX-4 = %X", shiftedAddress(X-4, address, X));
getchar();
return 0;
}
Объяснение кода листинга программы
- Включаем файл стандартного ввода/вывода
- Определяем константу N, равную 10
- Создаем функцию shiftedAddress, которая принимает три аргумента: указатель на массив X, сдвиг и базовый адрес X0
- В функции shiftedAddress происходит вычисление нового адреса путем сдвига исходного адреса на величину сдвига, и возвращается значение этого нового адреса
- Создаем массив X типа int, содержащий 10 элементов
- Объявляем переменную address, которая содержит базовый адрес памяти
- Вызываем функцию shiftedAddress с аргументами X, address и X0, и выводим результат на экран
- Вызываем функцию shiftedAddress с аргументами X+1, address и X, и выводим результат на экран
- Вызываем функцию shiftedAddress с аргументами X+5, address и X, и выводим результат на экран
- Вызываем функцию shiftedAddress с аргументами X-4, address и X, и выводим результат на экран
- Ждем нажатия клавиши для завершения работы программы
- Возвращаем 0, что означает успешное завершение работы программы