Использование указателей для доступа к элементам массива - 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();
}

Объяснение кода листинга программы

  1. Объявляется массив arr[5] и инициализируется значениями от 5 до 1.
  2. В цикле выводятся значения элементов массива arr.
  3. В цикле выводятся адреса элементов массива arr.
  4. В цикле элементам массива arr присваиваются значения i + 1.
  5. В цикле выводятся обновленные значения элементов массива arr.
  6. Попытка выполнить операцию (arr+0) = (arr + 2) вызывает ошибку.
  7. Объявляется указатель pArr на массив arr с шагом 2.
  8. В цикле выводятся значения элементов массива arr через указатель pArr.
  9. Программа завершается вызовом функции getch().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы