sizeof()运算符为数组和指向数组的指针返回不同的值

sizeof() operator returns different value for an array and pointer to an array

本文关键字:数组 返回 指针 运算符 sizeof      更新时间:2023-10-16

下面是一个C程序:

#include<stdio.h>
void func(int a[])
{
  printf("%dn",sizeof(a));
}
int main()
{
  int arr[10];
  printf("%dn",sizeof(arr));
  func(arr);
  return 0;
}

现在的问题是,当我使用sizeof(arr)时,size of()operator返回40,但当我使用size(a)
这种行为的原因是什么?

简单但令人困惑:函数参数(如int a[]int a[42])将调整为int* afunc(int a[])调整为

void func(int* a)

在这里,a实际上只不过是一个指针。所以sizeof(a)就是sizeof(int*)

除此之外,在许多情况下,数组可以衰减为指针,例如将arr传递给func。这使得这种情况发生

func(arr);

即使CCD_ 10的参数是指针。

您正在将"指针"的大小与数组的实际大小进行比较。