如何在C++中不使用sizeof()运算符找到数组的大小
在C ++中,我们使用 _sizeof() _ 运算符查找所需数据类型,变量和常量的大小。 它是一个编译时执行运算符。 我们可以使用 _sizeof() _ 运算符找到一个数组的大小,如下所示:
没有使用sizeof()运算符查找数组大小的方法
给定一个数组(您不知道数组中的元素类型),在不使用sizeof()运算符的情况下找到数组中的元素总数。 因此,我们可以使用下面提到的方法:
- 使用指针技巧
- 使用自己制作的sizeof()
- 使用模板函数
- 使用宏函数
- 使用哨兵值
- 使用类或结构
1.使用指针技巧
与其他解决方案相比,以下解决方案是简洁的。可以使用以下表达式找到数组A中的元素数:
这是如何工作的?
这里指针算术完成工作。 我们不需要将每个位置显式地转换为字符指针。
- **& arr ** - 指向6个元素的数组的指针。 [请参阅此处,了解&arr和arr之间的区别]
- **( & arr + 1) ** - 指向6个整数地址,因为指针类型是指向6个整数的数组的指针。 简单地说,(&arr + 1)是整数前面的地址。
*(& arr + 1)
- 与(& arr + 1)相同的地址,但指针类型为“ int *”。*(& arr + 1)- arr
- 由于*(& arr + 1)指向arr之前的6个整数的地址,因此两者之间的差异为6。
示例:
输出
2.实现自己的sizeof():
使用自定义用户定义的sizeof函数,它可以提供与sizeof()相同的功能。
示例:
输出
要了解更多有关方法的信息,请参考implement our own sizeof。
3.使用模板函数:
我们可以使用模板函数查找数组的大小。
示例:
输出: