每次打印错误的数组大小

时间:2014-03-19 12:10:34

标签: c arrays

这是一个基本问题,但我遇到阵列大小问题。

这里,我在主要功能尺寸功能中打印数组大小。在主要功能中,它将正确的数组大小打印为 40 ,但在 size function 中,我已将数组作为参数打印为数组的打印大小为的 8

我尝试过 void size(arr [SIZE]'或'arr []'或'arr [10]),但输出保持不变。

任何人都可以解释为什么会出现这种行为吗?

#include<stdio.h>
#define SIZE 10

void size(int arr[SIZE])
{
        printf("func_size() : size of array is : [%d]\n",sizeof(arr));
}

int main()
{
  {
      int var = 10;
  }
  {
      printf("%d", var); 
  }
  return 0;
}

输出:

func_main():数组的大小为:[40]

func_size():数组的大小为:[4]

1 个答案:

答案 0 :(得分:2)

因为arrays在函数中传递时会在函数中衰减成指针(到第一个元素)。

sizeof中的

size()返回指针arr的大小。阅读Arrays and Pointers