首页 > 解决方案 > 定义的变量不同

问题描述

为什么平均函数中的变量与主函数中的相同变量不同?我不知道如何解决它,因为我只是在学习。

#include <stdio.h>
#define  SIZE (sizeof(number)/sizeof(int))

int number[] = {5,65,84,25,644,2};

int average(int *number)
{
    printf("size = %ld\n",SIZE);
    int sum=0;
    for(int i=0;i<=SIZE ;i++)
    {
    sum += number[i];
    }
    return sum/SIZE;
}

int main()
{
printf("average : %d\n",average(number));
printf("number of elements: %ld\n", SIZE);


return 0;
}

标签: c

解决方案


您使用宏(即#define ...)来指定SIZE. 无论您在何处使用该宏都会“以文本方式”扩展它,并在相应的上下文中对其进行解释,即它的含义取决于您放置它的位置。

所以在 main 中,number作为宏的一部分是指全局变量number,而在函数的上下文中average,它指的是函数参数number(它隐藏了同名的全局变量)。

无论如何,不​​可能从指针变量中推断出任何数组大小。您必须将元素的数量作为额外参数传递。


推荐阅读