Создание двойного указателя
Могу ли я узнать, что происходит в следующих командах? Здесь мы имеем 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;