如题
#include <iostream>
using namespace std;
void test(int* A)
{
cout<<"sizeof(A):"<<sizeof(A)<<endl;
cout<<"sizeof(A[0]):"<<sizeof(A[0])<<endl;
cout<<"sizeof(A)/ sizeof(A[0]):"<<sizeof(A)/ sizeof(A[0])<<endl;
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8};
test(arr);
cout<<"sizeof(arr):"<<sizeof(arr)<<endl;
cout<<"sizeof(arr[0]):"<<sizeof(arr[0])<<endl;
cout<<"sizeof(arr)/ sizeof(arr[0]):"<<sizeof(arr)/ sizeof(arr[0])<<endl;
return 0;
}
在32位系统中计算结果如下:
sizeof(A):4
sizeof(A[0]):4
sizeof(A)/ sizeof(A[0]):1
sizeof(arr):32
sizeof(arr[0]):4
sizeof(arr)/ sizeof(arr[0]):8
在64位系统中计算结果如下:
sizeof(A):8
sizeof(A[0]):4
sizeof(A)/ sizeof(A[0]):2
sizeof(arr):32
sizeof(arr[0]):4
sizeof(arr)/ sizeof(arr[0]):8
作为实参的arr进行sizeof()运算,得到的结果是整个数组的大小,但是,作为形参的A进行sizeof()运算,得到的结果却不然。
按理说,调用test(arr);即将实参arr拷贝给形参A,为何会得出不一样的结果?哪位大神给解答一下,谢谢!