有人可以解释一下这段代码吗?

时间:2014-01-22 03:53:17

标签: c++ double-pointer

“header”是结构的对象,您可以认为header.img的值为496.而header struct有3个整数元素,因此值为12个字节。 (考虑4个字节的int)

double** MatrixBuffers = new double* [header.img];  
    MatrixBuffers[0] = new double[header.img* 12];  
    for (unsigned int i=1; i<header.img; ++i) {
        MatrixBuffers[i] = MatrixBuffers[0] + i * 12;
    }
    globaldata.adv_MatrixBuffers = MatrixBuffers;

我知道MatrixBuffers是指向496双打的指针。但我不明白第二行发生了什么。

MatrixBuffers[0] = new double[header.img* 12];

1.这是否意味着MatrixBuffers [0]是指向496 * 12双精度的指针? 2. for循环中发生了什么? 3.在代码中,MatrixBuffer [0]被传递给一个函数。这是否意味着我传递的指针是MatrixBuffers [0]的基地址?

1 个答案:

答案 0 :(得分:0)

对于双指针,您必须为第一维和第二维分配内存。

对于第二级而不是为每个维度分配内存,他一次性分配内存

MatrixBuffers[0] = new double[header.img* 12];

在for循环中,他们移动地址并为每个索引分配相同的地址。

相反,他也可以在for循环中执行此操作并注释for循环上方的行

MatrixBuffers[i] = new double[header.img];