C++通过指针获取数组长度
时间: 2024-10-08 21:21:34 浏览: 45
在C++中,你可以通过几种方法获取数组的长度,特别是当你有一个指向数组的指针时。这里有两个常见的方法:
1. **静态大小数组**:
如果数组是静态大小并且你知道它的大小,你可以直接通过数组名获取长度。例如:
```cpp
int arr[10]; // 数组长度为10
size_t length = sizeof(arr) / sizeof(arr[0]);
```
`sizeof(arr)`会返回整个数组占用的字节数,除以单个元素的`sizeof(arr[0])`得到的就是数组的元素个数。
2. **动态分配数组**:
对于动态分配的数组,如`new[]`创建的,由于没有预设的大小,你需要知道数组初始化时提供的大小信息:
```cpp
int* dynamicArr = new int[10];
size_t length = dynamicArr ? dynamicArr - &(*dynamicArr) : 0; // 使用指针算术
delete[] dynamicArr;
```
这里计算的是数组起始地址到第一个元素地址的距离,也是元素个数。
3. **数组作为函数参数**:
如果数组是一个函数参数,并且数组名在函数内部可以转换为对数组首元素的迭代器,这时也可以间接计算长度:
```cpp
void printArray(int(&arr)[10]) {
size_t length = sizeof(arr) / sizeof(arr[0]);
// ...
}
```
记得处理空指针的情况,上述代码中的条件`dynamicArr ? ... : 0`用于检查指针是否为空。
阅读全文