【发布时间】:2019-10-08 23:32:26
【问题描述】:
我在计算这个数组的列数或行数时遇到问题(没关系,因为它总是方阵),创建如下:
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]);
如果您知道解决方案,请与我分享。
【问题讨论】:
-
指针的大小是指针本身的大小,而不是它可能指向的大小。改用
std::vector或std::array,就不会有这样的问题了。 -
答案是你不能。如果您必须在 std::vector 等容器类上使用此类构造,则需要传递维度。 c++ 中的 sizeof() 是一个编译时间常数。在这种情况下,它将返回指针的大小。
-
drescherjm:写一个答案,我给你一个解决方案标记。
标签: c++ arrays pointers sizeof