2016-04-18 4 views
-5

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

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

Что вы подразумеваете под «в основном»? Каков твой вопрос? –

+1

Вы слишком много делаете. Начните с чего-то более простого. Вы понимаете, что такое 'int * p = new int [10];' does, и что такое значение 'p'? –

+0

'var' - это« в основном »беспорядок после этого. –

ответ

0

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

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

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

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

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

//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;