【问题标题】:Creating Double Pointer创建双指针
【发布时间】:2016-04-18 08:34:41
【问题描述】:

我可以了解以下命令中发生的情况吗? 这里我们有H 作为一个结构,n 作为一个整数类型的结构元素。 var 基本上在这之后是什么?

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

【问题讨论】:

  • “基本上”是什么意思?你有什么问题?
  • 你做的太难了。从更简单的事情开始。你明白int * p = new int[10];是做什么的,p的价值是什么吗?
  • var 在此之后“基本上”是一团糟。

标签: c++ pointers double-pointer


【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    相关资源
    最近更新 更多