Основы программирования на С++ для начинающих

Задачи и решения: Указатели C++

Тему Указатели в C++ мы рассмотрели в двух статьях:

–  Часть 1: Указатели С++

– Часть 2: Указатели С++

Теперь вам придется много практиковаться, чтобы закрепить знания и до конца разобраться. Решим несколько задач для начала.

1.  Задачка элементарная, но требует хорошего понимания что такое указатели. Дан указатель: double **p = 0; Выполните следующие задания (решения можно оформлять внутри функции main):
* создайте конструкцию, изображенную на рисунке;
* выведите число, указанное в квадратике, на экран;
* после этого удалите все динамические объекты.

задача с решением, указатели С++

Опять же – ищем самое короткое решение. Автор:  

2. Объявите указатель на массив типа double и предложите пользователю выбрать его размер. Далее напишите четыре функции: первая должна выделить память для массива, вторая  – заполнить ячейки данными, третья – показать данные на экран, четвертая – освободить занимаемую память.  Программа должна предлагать пользователю продолжать работу (создавать новые динамические массивы ) или выйти из программы. 

3. Объявите указатель на массив типа int и выделите память память для 12-ти элементов. Необходимо написать функцию, которая поменяет значения четных и нечетных ячеек массива. Например есть массив из 4-х элементов:

задачи и решения указатели c++

задачи и решения указатели c++

4.  Объявить и заполнить двумерный динамический массив случайными числами от 10 до 50. Показать его на экран. Для заполнения и показа на экран написать отдельные функции. (подсказка: функции должны принимать три параметра – указатель на динамический массив, количество строк, количество столбцов).  Количество строк и столбцов выбирает пользователь.

30 thoughts on “Задачи и решения: Указатели C++

  1. Не понял решения первого задания
    Либо я плохо читал и смотрел видос, либо я просто что-то забыл, но как я понял, этот указатель – указатель на указатель, верно?
    То есть, одной строчкой кода мы создаем два указателя, один из которых указывает на другой указатель, который в свою очередь указывает на 2.
    Послушать так бред
    у меня много вопросов,
    Как указатель указывает просто на двойку? Или там еще и переменная создается?
    почему сначала, там нужно поставить * а потом нет?
    *(*(p = new double*) = new double) = 2;
    И что вообще происходит в этой строке я так и не разобрался
    Кто в этом разбирается помогите пожалуйста, ничего не понимаю

    1. Указателю p присваивается адрес динамически выделенной памяти в которой хранится указатель на double, далее мы разадресуем p и получаем указатель на тип double и динамически выделяем ему память, разадресацией получаем значение этой ячейки памяти (с double) и присваиваем ему значение 2.Можно записать по другому:
      p = new double*;
      *p=new double;
      **p=2;

      1. Спасибо, впринципе я примерно так и думал, только у меня в голове это казалось намного сложнее

Добавить комментарий для Madz1n Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *