#include <iostream>
using namespace std;
int function(int arr [])
{
int y = sizeof(arr)/sizeof(arr[0]);
return y;
}
int main ()
{
int arr[] = {1,2,3,4,5,6};
int x = sizeof(arr)/sizeof(arr[0]);
cout <<x<<"\n";
int y=function(arr);
cout <<y<<"\n";
return 0;
}
答案 0 :(得分:1)
int arr[] = {1,2,3,4,5,6};
int x = sizeof(arr)/sizeof(arr[0]);
在这种情况下,arr
是一个包含6个int元素的数组。 sizeof
的{{1}}为4个字节,因此int
为24,除以单个整数的sizeof(arr)
等于6。
sizeof
在这种情况下,int function(int arr [])
{
int y = sizeof(arr)/sizeof(arr[0]);
return y;
}
衰减到指向int的指针。根据您的平台,指针的arr
可能是4或8个字节。
答案 1 :(得分:0)
输出如下:
6
1
在x
函数中计算main()
时,arr
是一个数组。因此,sizeof(arr)
以字节为单位返回整个数组的大小。
int x = sizeof(arr) / sizeof(arr[0]);
// 24 / 4 = 6 (assuming your compiler assigns 4 bytes to an integer)
但是当你将它传递给一个函数时,作为参数传递的是指向数组的指针。所以,这基本上就像将int *arr
传递给函数。