使用sizeof()计算数组大小
Calculation of Array size using sizeof()
摘自topcoder文章:
表达式
sizeof(data)/sizeof(data[0])
返回数组data
的大小,但仅在>少数情况下,所以除了在此类构造中以外的任何地方不要使用它。(C程序员会同意我!)
要获取数组大小,我一直在使用此表达式sizeof(data)/sizeof(data[0])
所有原始类型。
有人知道上述表达式不应使用的任何这种情况吗?
如果 data
被声明为:
int *data;
然后像这样分配了空间:
data = malloc( NUM_ELEMENTS * sizeof(int) );
那么您的技术将无法使用,因为sizeof(data)
是 pointer 的大小,而不是数组的内容。
sizeof
方法编译,但在给指针或不确定大小的数组时不起作用。只需使用适当的C 方法:
template <typename T, std::size_t N>
constexpr std::size_t size(T(&)[N]) {
return N;
}
在数组上使用size()
正常工作。在不适用的情况下,例如在指针上。
sizeof技术的静态数组校正,它将没有任何问题。如上所述,对于动态数组和指针数据,它将无法正常工作。
相关文章:
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++数据文件、数组和计算赋值
- 如何计算数组中元素的位数?(不是数组的长度),并计算其数字的总和
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 有效地计算多维数组的累积和?
- 通过指针算法计算数组长度
- 计算数组重复次数的组合的有效算法,加起来达到给定的总和
- 给定一个单词数组和一个字符串,如何计算给定字符串中的所有单词
- 使用结构数组计算文本文件中单词的出现次数C++
- 使用 2D 数组计算总计、最高价和最低价
- 二维数组:计算行的总和和列的乘积
- 从字符数组计算平均数
- 练习:使用数组计算方差
- 二维数组计算公式
- 从导入的二维数组计算平均值
- 从数组计算数据的c++问题
- 通过二维数组计算文件中的特定记录
- Python模拟显示慢性能,如何加快数组计算速度
- 通过数组计算文本文件数值数据