学 C++ 的时候,指针和数组永远是绕不开的两兄弟。它们看起来长得一样,用起来却处处是坑。这篇文章把我踩过的三个坑记下来,希望能帮你少走点弯路。
坑一:数组名到底是不是指针?
很多人背口诀:数组名就是首地址。这句话不全对,它只在"作为函数参数"时成立。
#include <iostream>
void func(int arr[]) {
// 这里的 arr 已经退化成指针了
std::cout << sizeof(arr) << std::endl; // 8,是一个指针的大小
}
int main() {
int a[5] = {1, 2, 3, 4, 5};
std::cout << sizeof(a) << std::endl; // 20,整个数组的大小
func(a);
return 0;
}
2026/8/21大约 2 分钟