获取数组长度

定义了一个整型数组,利用sizeof()获取数组大小时,发现得到的结果是原来的4倍。
因为一个int型数据,占4个字节,可以这样解决这个问题:

  • 1、使用sizeof(test)/sizeof(int)
  • 2、使用sizeof(test)/sizeof(test[0])
在C++中,有几种不同的方式可用于获取数组长度: 1. **使用宏定义**:可以定义一个宏常量来获取数组长度。示例代码如下: ```cpp #include <iostream> #define Array_size(array) sizeof(array)/sizeof(array[0]) int main() { int arr[] = { 1,2,3,4,5,6,7,8,9}; std::cout << "数组arr长度:" << Array_size(arr) << std::endl; std::cout << "数组arr内存大小:" << sizeof(arr) << std::endl; return 0; } ``` 这里通过`#define Array_size(array) sizeof(array)/sizeof(array[0])`定义了一个宏,使用`Array_size`宏来获取数组长度[^1]。 2. **使用函数模板**:可以创建一个函数模板来获取数组长度。示例代码如下: ```cpp #include <iostream> template<class T> int length(T& arr) { return sizeof(arr) / sizeof(arr[0]); } int main() { int arr[] = { 1,5,9,10,9,2 }; std::cout << "数组长度为:" << length(arr) << std::endl; return 0; } ``` 通过定义`length`函数模板,传入数组引用,利用`sizeof`计算数组长度[^4]。 3. **使用标准库的`begin`和`end`函数**:可以使用`std::begin`和`std::end`函数来获取数组的起始和结束迭代器,然后相减得到数组长度。示例代码如下: ```cpp #include <iostream> #include <iterator> int main() { int arr[] = { 1,5,9,10,9,2 }; std::cout << "数组长度为:" << std::end(arr) - std::begin(arr) << std::endl; return 0; } ``` 使用`std::begin`和`std::end`函数获取数组的起始和结束迭代器,二者相减得到数组长度[^4]。 4. **使用函数传引用**:通过函数传引用的方式获取数组长度。示例代码如下: ```cpp #include <iostream> int foo(int (&arr)[4]) { return sizeof(arr) / sizeof(arr[0]); } int main() { int arr[4] = {1,2,3,4}; std::cout << foo(arr) << std::endl; return 0; } ``` 定义`foo`函数,传入数组引用,在函数内部使用`sizeof`计算数组长度[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值