c++ 用一个指针指向数组,如何通过指针判断数组的长度
时间: 2023-07-20 11:32:08 浏览: 82
在 C++ 中,指针可以指向数组的首地址,可以通过指针计算数组的长度。假设有一个指针 `p` 指向一个数组的首地址,可以使用以下方式计算数组的长度:
```cpp
int arr[] = {1, 2, 3, 4, 5};
int* p = arr; // p 指向数组的首地址
int len = sizeof(arr) / sizeof(int); // 计算数组的长度
```
在上面的代码中,`sizeof(arr)` 表示整个数组的字节大小,`sizeof(int)` 表示每个元素的字节大小,两者相除可以得到数组的长度。由于指针 `p` 指向数组的首地址,因此也可以使用指针 `p` 来计算数组的长度:
```cpp
int arr[] = {1, 2, 3, 4, 5};
int* p = arr; // p 指向数组的首地址
int len = sizeof(arr) / sizeof(*p); // 计算数组的长度
```
上面的代码中,`sizeof(*p)` 表示指针 `p` 所指向的元素的字节大小,也就是数组中每个元素的字节大小。
相关问题
c++ 一个指针指向一个指针数组,如何通过整个指针判断数组的长度
假设指针变量为ptr,可以通过以下方式获取指针数组的长度:
```c++
int count = 0;
int** p = ptr;
while (*p != nullptr) {
count++;
p++;
}
```
这里我们定义一个计数器count,将ptr强制转换为指向指针类型的指针p,然后遍历整个指针数组,每遍历一个非空指针,count就加1,直到遍历到最后一个空指针为止。最终得到的count就是指针数组的长度。
使用C++,实现指针指向数组,将指针作为参数,传入函数
好的,这是一个常见的 C++ 编程问题,可以通过以下代码实现:
```cpp
#include <iostream>
// 定义一个函数,参数为指针和数组的长度
void printArray(int *arr, int len) {
for (int i = 0; i < len; i++) {
std::cout << *(arr + i) << " ";
}
std::cout << std::endl;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int len = sizeof(arr) / sizeof(int);
// 定义一个指针指向数组首元素
int *p = arr;
// 将指针和数组长度作为参数,传入函数
printArray(p, len);
return 0;
}
```
在上面的代码中,我们首先定义了一个 `printArray` 函数,该函数接受一个指针和数组的长度作为参数,然后利用指针遍历整个数组并输出每个元素的值。
接着在主函数中,我们定义了一个整型数组 `arr`,并计算出该数组的长度。然后,我们定义了一个指针 `p`,并将其指向数组 `arr` 的首元素。最后,我们将指针 `p` 和数组长度作为参数,传入函数 `printArray` 中,并执行该函数。
运行上面的代码,将输出以下结果:
```
1 2 3 4 5
```
这说明我们成功地将指针作为参数传入函数,并在函数内部使用指针指向数组进行了操作。