如何从函数外部访问变量

时间:2016-02-22 21:20:50

标签: c

我在这里写了一些C代码。我有一个简单的错误,这很令人困惑。 我正在浏览这个援助网站:http://www.codingunit.com/c-tutorial-functions-and-global-local-variables。它说,在 Main 中声明的变量可以在 Main 之外的函数中使用。所以我在这里有这个代码:***已被简化和修改,以减少眼睛的复杂性。

void get_user_input(int grades[], int n) //My function
{ 
int i;
for (i = 0; i < n; i++)//Loop to collet grades.
{
printf("Please entera grade between 0 and 100 for student # %i: ", i+1);
 scanf("%d", &grades[i]);

if (grades[i] >= 93)
{
 grades_scale[0]++;
 total_count++;
}
else if (grades[i]<= 92 && grades[i] >= 90)
{
 grades_scale[1]++;
 total_count++;
}

然后我的主要在这里:

int main()
{
int n,i;

printf("How many grades students are in the class?  ");
scanf("%d", &n);

int grades[n];
int grades_scale[11] = {0};
int total_count = 0;

get_user_input(grades,n);
}

在我的Main中,我声明 grade_scale total_count 并初始化为全局变量对吗?然而,当我编译并运行我的程序时,它在我的函数中向我发送了一个错误,指出 total_count和grades_scale尚未声明。如何在主要中的功能中访问我的varibable? 例如:total_count和grades_scale。

2 个答案:

答案 0 :(得分:2)

main()是它自己的一个功能。要成为全局变量,应在任何函数之外进行初始化。

除非您使用在main()中声明的变量将参数传递给函数,否则它不会识别这些变量。

答案 1 :(得分:1)

这是一个完整的例子

注意

我认为值得一提,即使初学者认为全局变量有其用途但通常被认为是不好的做法。我不打算解释原因,使用Google和stackoverflow的魔力。

#include <stdio.h> 

/* global variables are here 
 * they don't need to be passed to the function */ 
int total_count = 0; 
int grades_scale[11] = {0};

/* your function */ 
void get_user_input(int grades[], int n)
{ 
    int i;
    for (i = 0; i < n; i++)//Loop to collet grades.
    {
        printf("Please entera grade between 0 and 100 for student # %i: ", i+1);
        scanf("%d", &grades[i]);

        if (grades[i] >= 93)
        {
            grades_scale[0]++;
            total_count++;
        }
        else if (grades[i]<= 92 && grades[i] >= 90)
        {
            grades_scale[1]++;
            total_count++;
        }
    }
}

int main()
{
    int n = 0; 
    printf("How many grades students are in the class?  ");
    scanf("%d", &n);

    int grades[n] = {0}; 
    get_user_input(grades,n);
}