我在这里写了一些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。
答案 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);
}