char arr[]={"hello"} 计算sizeof(arr) sizeof(*arr) sizeof(**arr)
时间: 2024-01-17 13:53:35 浏览: 28
对于 `char arr[]={"hello"}`,计算 `sizeof(arr)`、`sizeof(*arr)` 和 `sizeof(**arr)` 的结果如下:
- `sizeof(arr)`:该数组的大小为 6(包括字符串末尾的空字符 \0),因为 `arr` 中包含 6 个 `char` 类型的元素。
- `sizeof(*arr)`:`*arr` 表示数组的第一个元素,即 `arr[0]`,其类型为 `char`,因此 `sizeof(*arr)` 的结果为 1。
- `sizeof(**arr)`:`**arr` 表示数组的第一个元素的第一个字符,即 `arr[0][0]`,其类型为 `char`,因此 `sizeof(**arr)` 的结果为 1。
相关问题
long long* arr = malloc(sizeof(long long) * 4);
这段代码使用了动态内存分配函数`malloc`来为一个长长整型(`long long`)数组分配内存空间。根据代码中的`sizeof(long long) * 4`,它将为4个长长整型元素分配足够的内存空间。`malloc`函数返回一个指向分配内存的指针,这里将其赋值给了`arr`变量。
需要注意的是,在使用完动态分配的内存后,应该使用`free`函数释放这些内存,以避免内存泄漏。例如,可以在不再需要使用`arr`时调用`free(arr)`来释放分配的内存空间。
sizeof(arr)/sizeof(*arr)
这段代码用于计算数组arr的长度,其中sizeof(arr)返回整个数组的大小,而sizeof(*arr)返回数组中元素的大小。因此,sizeof(arr)/sizeof(*arr)可以得到数组arr的长度。这个方法在C++中非常常用,可以避免在循环中手动计算数组长度的麻烦。
下面是一个例子,演示如何使用sizeof(arr)/sizeof(*arr)计算数组长度:
```cpp
#include <iostream>
using namespace std;
int main() {
int arr[] = {1, 2, 3, 4, 5};
int len = sizeof(arr) / sizeof(*arr);
cout << "The length of the array is: " << len << endl;
return 0;
}
```
输出结果为:
```
The length of the array is: 5
```