X和Y的价值是多少?。为什么不同?

时间:2014-11-22 14:13:14

标签: c++ output

#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;
}

2 个答案:

答案 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传递给函数。

来源:C++ Size of Array