Создание двойного указателя

Могу ли я узнать, что происходит в следующих командах? Здесь мы имеем H как структура с n как элемент структуры целочисленного типа. Что такое var в основном после этого?

float **var;
var = new float* [H.n];

1 ответ

H.n предположительно целое число, например 10

float **var = new float*[10];

Чтобы упростить, вы можете создать псевдоним для float*, назови это pfloat:

typedef float* pfloat;
pfloat *var = new pfloat[10];

Так что это всего лишь 10 указателей. Каждый указатель может быть выделен для создания отдельного массива, в результате чего получается двумерный массив:

//initialize 10 x 20 array:
float **var = new float*[10];
for (int i = 0; i < 10; i++)
    var[i] = new float[20];

//use:
for (int i = 0; i < 10; i++)
{
    for (int j = 0; j < 20; j++)
    {
        var[i][j] = i * 20 + j + 0.1f;
        cout << var[i][j] << "\n";
    }
}

//cleanup:
for (int i = 0; i < 10; i++)
    delete[]var[i];
delete[]var;
Другие вопросы по тегам