sizeof()的参数为指针和数组
C++或C语言中,都可以使用sizeof()运算符来计算数组的字节大小,除此之外,在C++和C语言中,都可以使用一个指向数组第一个元素的内存地址的指针来引用数组,因此,如果要计算数组的字节大小,或长度,传递数组本身或传递指向数组的指针给sizeof()运算符似乎都是可以的,实际上则不然,二者有本质上的区别。我们可以先来看一个实例,如下:
#include <iostream>
using namespace std;
int main(){
int arr[] = {1,2,3};
// 计算arr的大小
int n = sizeof(arr);
// 定义一个指针指向数组arr
int *p = arr;
// 将指针p传递给sizeof()
int m = sizeof(p);
cout << n << std::endl;
cout << m << std::endl;
return 0;
}
如上代码,编译运行之后,输出的n和m的值是不同的!这是为什么呢?
不同值的原因
这主要是因为当sizeof()运算符的参数是数组本身,将计算的是数组的大小,而如果传递的是指针作为参数,那计算的便是指针的大小,而不是整个数组的。
来源:C++ sizeof()的参数为指针和数组的区别
免责声明:内容仅供参考,不保证正确性。