X和Y的值是什么,为什么不同

What is the value of X and Y ?.why it is different?

本文关键字:为什么不 是什么      更新时间:2023-10-16
#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;
}
  int arr[] = {1,2,3,4,5,6};
  int x = sizeof(arr)/sizeof(arr[0]);

在这种情况下arr是一个由 6 个 int 元素组成的数组。 intsizeof是 4 个字节,因此sizeof(arr)是 24,除以单个整数的 sizeof 等于 6。

int function(int arr [])
{
  int y = sizeof(arr)/sizeof(arr[0]);
  return y;
}

在这种情况下,arr衰减为指向 int 的指针。根据您的平台,指针的sizeof可能是 4 或 8 个字节。

输出将如下所示:

6
1

解释:

main()函数内计算x时,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++ 数组大小