Что делает указатель на указатель в этом примере? - PullRequest
0 голосов
/ 28 апреля 2019

По поиску в Интернете я узнал, что указатели на указатели относятся к указателям, в которых хранится адрес. Но я не получаю этот пример с использованием их в таблицах. Разве эта ** вкладка позволяет просматривать * [строки], значение каждой строки?

Изменение ** вкладки в простую вкладку приводит к тому, что программа не запускается.

#include <iostream>

using namespace std;

void write_elements_of_the_table(int **T,int rows, int columns) {

    for (int i=0;i<rows;i++){
    cout <<"\t["<<i<<"]";
    }

    cout<<endl;

    for (int i=0;i<rows;i++){
        cout <<"["<<i<<"]";
       for (int j=0;j<columns;j++){
        cout <<"\t  "<< T[i][j];
       }
    cout<<endl;
    }
}


int main()
{ 
    int **tab, columns,rows;
    cout<<"Write the amount of rows:"<<endl;
    cin >> rows;
    cout<<"Write the amount of columns"<<endl;
    cin >> columns;
    // pointer table
    tab = new int *[rows];
    for (int i=0;i<rows;i++){
      tab[i]=new int[columns];
    }

    for (int i=0;i<rows;i++){
       for (int j=0;j<columns;j++){
        cout<<"Write the element value"<<endl;
        cin>>tab[i][j];
       }

    }

    write_elements_of_the_table(tab,rows,columns);

    //deleting the table

    for (int i=0;i<rows;i++){
        delete []tab[i];
    }

    delete []tab;

    return 0;
}

Я бы хотел понять значение вкладок ** T и **.

1 Ответ

1 голос
/ 28 апреля 2019

Я хотел бы понять значение вкладок ** T и **.

int - это тип.Более конкретно, это целочисленный тип.

int* также является типом.Более конкретно, это тип указателя.Указатели указывают на другие объекты.Объект типа int*, в частности, указывает на объект типа int.

int** также является типом указателя.Это также указывает на другие объекты.Объект типа int** указывает на объект типа int*.int **T и int **tab являются переменными типа int**.


new[] Выражение выделяет массив объектов с динамическим хранением.Значение, возвращаемое выражением, является указателем на первый элемент этого массива.

new int[n] выделяет массив из int объектов.Значение, возвращаемое выражением, является указателем на первый объект в этом массиве.Тип этого указателя int*.

new int*[m] выделяет массив из int* объектов.Значение, возвращаемое выражением, является указателем на первый объект в этом массиве.Тип этого указателя int**.

Краткое описание tab: tab - указатель на первый элемент массива указателей, где каждый элемент массива указывает на первыйэлемент массива целых чисел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...