创建为双指针的两个暗淡数组的计数大小

时间:2019-05-22 13:03:46

标签: c++ arrays pointers sizeof

我在计算按以下方式创建的该数组的列或行数量(这没关系,因为它将始终是方阵)时遇到问题:

    float **arr1 = new float*[3];

    for (int i = 0; i < 3; i++){
        arr1[i] = new float[3];
    }

    for (int i = 0; i < 3; i++){
        for (int i = 0; i < 3; i++){
            arr1[i][j] = i;
        }
    }

我尝试了许多选项,但总是得到结果:1,例如:

    sizeof(arr1[0])/sizeof(arr1[0][0]);

如果您知道解决方案,请与我分享。

1 个答案:

答案 0 :(得分:1)

sizeof()将仅返回指针的大小。

只有一种方法可以获取数组的大小。创建一个包装原始数组并包含其大小的类/结构。

幸运的是,您不必创建这样的结构,因为自C ++ 11起,您可以使用std::array来满足您的需要,正是您所需要的。您可以按照以下方式重写示例:

std::array<std::array<float, 3>, 3> square; // size 3x3

    for(size_t i = 0; i < square.size(); ++i)
    {
        for(size_t j = 0; j < square[0].size(); ++j)
            square[i][j] = i;
    }

方法size()为您提供内部数组的大小。

希望对您有帮助。