0

如何在 C++ 中获取动态分配的整数数组的大小?

示例:(/这将始终给出 4 作为 4 * 8 = 32bits 它是 int 的大小)

bool tabSum(int* t, int& p, int& np){
   cout<<"\n\n";
   cout<<sizeof(*t)<<endl;
}
4

3 回答 3

7

你不能,数组在作为参数传递时会衰减为指针。并且sizeof是编译时运算符。

我建议你std::vector改用。

于 2012-08-30T12:21:04.667 回答
4

这不可能。

每个使用指针作为参数并期望它是数组的合理函数总是会采用第二个参数来表示元素的数量。

在 STL 中使用的另一种方法是使用一个指针作为结束边界,该指针越过数组中的最后一项。STL 迭代器通过使用 begin() 和 end() 方法来抽象这种方法。这种方法还消除了对单独的数字数据类型(例如 size_t)的需要。

此规则的一个值得注意的例外是字符串函数需要以 NULL 结尾的字符串,尽管该特定方法容易出现安全问题并且使用 std::string 类是首选方法。

于 2012-08-30T12:27:04.107 回答
0

你不可以做这个。正如其他用途已经提到的那样,将长度保存在一个额外的变量中,或者编写您自己的 malloc/realloc 类,这可能是一个小帮手并为您跟踪这些。

于 2012-08-30T12:45:27.467 回答