Использование указателей для доступа к элементам массива - C (СИ)
Формулировка задачи:
Помогите пожалуйста написать программу с подробным обьяснением:. Использование указателей для доступа к элементам массива
1. Описать одномерный массив arr из 5 элементов типа int.
2. Вывести на экран в виде arr=...значение arr (какого оно типа?), и в цикле поочередно адреса всех элементов массива. Адрес каждого элемента выводим с новой строки в виде &arr[...]= ... Проанализировать результаты.
3. Используя для доступа к элементам массива адресную арифметику (а не квадратные скобки) в цикле присвоить элементам массива последовательно значения от 1 до 5.
4. Присвоить arr адрес среднего (третьего по счету) элемента массива. Что происходит при компиляции программы и как это можно объяснить? Строку закомментировать.
5. Добавить в программу указатель pArr на тип int. Присвоить указателю pArr адрес среднего элемента массива.
6. Рассматривая pArr как указатель на массив, вывести значения всех элементов. В каких пределах должен изменяться индекс у "массива" pArr?
Решение задачи: «Использование указателей для доступа к элементам массива»
textual
Листинг программы
#include <iostream> #include <conio.h> using namespace std; int main() { int arr[5] = {5, 4, 3, 2, 1}; for(int i = 0; i < 5; ++i) cout << "arr= " << arr[i] << endl; //тип int. for(int i = 0; i < 5; ++i) cout << "&arr[" << i << "]=" << &arr[i] << endl; //интервал адресов = 4, что соответсвует размеру резервируемое памятью под переменную типа int (4 байта). for(int i = 0; i < 5; ++i) *(arr + i) = i + 1; for(int i = 0; i < 5; ++i) cout << "arr= " << arr[i] << endl; //(arr+0) = (arr + 2); //Происходит ошибка. int* pArr; pArr = (arr + 2); for(int i = 0; i < 2; ++i) cout << "*pArr= " << *(pArr + i) << endl; //дальше лучше не идти, потому что следующие ячейки памяти могут содержать какие угодно данные, возможно даже те, на которые у нас не будет прав доступа. getch(); }
Объяснение кода листинга программы
- Объявляется массив arr[5] и инициализируется значениями от 5 до 1.
- В цикле выводятся значения элементов массива arr.
- В цикле выводятся адреса элементов массива arr.
- В цикле элементам массива arr присваиваются значения i + 1.
- В цикле выводятся обновленные значения элементов массива arr.
- Попытка выполнить операцию (arr+0) = (arr + 2) вызывает ошибку.
- Объявляется указатель pArr на массив arr с шагом 2.
- В цикле выводятся значения элементов массива arr через указатель pArr.
- Программа завершается вызовом функции getch().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д