int arr[] = {1, 2, 3, 4, 5};
这是一个 C++ 中的数组初始化方式,声明了一个包含 5 个整数的数组,并给出了初始值。
sizeof(arr) / sizeof(arr[0])
: 这是一个用于计算数组长度的常用技巧。
sizeof(arr)
返回整个数组的字节数,
sizeof(arr[0])
返回数组中一个元素的字节数。
通过用整个数组的字节数除以一个元素的字节数,可以得到数组中元素的个数。
在这里,这个表达式计算了数组 arr
中元素的个数,即 5。
在这个字符数组中,
arr是代表字符数组arr[],其数据类型为 int[5];
arr + 5 数据类型是指针 int * __ptr64 ;
int *
表示一个指向整数类型的指针。__ptr64
是 Microsoft Visual C++ 编译器的关键字,用于指示指针变量应该使用 64 位表示。这是 Microsoft C++ 的一个扩展,用于支持 64 位 Windows 操作系统。
arr
被声明为一个数组,而不是指针。arr
的类型是 int [5]
,表示一个包含 5 个整数的数组。
对于数组的初始化,arr
的名字可以隐式转换为指向数组第一个元素的指针,但这并不改变 arr
的本质,它仍然是一个数组:
但是在c++中写字符数组时也可以定义为指针类型:
int *ptr = arr; // 合法,arr 被隐式转换为指向第一个元素的指针ptr
是一个指向整数的指针,指向数组的第一个元素。
要查看 arr
的类型,你可以使用 decltype
或 typeid
:
#include <iostream>
#include <typeinfo>
int main() {
int arr[] = {1, 2, 3, 4, 5};
std::cout << "Type of arr: " << typeid(arr).name() << std::endl;
return 0;
}