C语言的函数能不能调用全局变量?

刚开始学C语言,问一下:
C语言里面的函数能不能调用全局变量啊?
举个例子:
#include<stdio.h>
void func(int);
main()
{
int x;
func(1);
printf("er");
}
void func(int a)
{
x=a; (这里报错,说x还未定义)
}

当然可以调用全局变量,这个程序报错的原因是 x不是全局变量 ,全局变量就是在函数外面定义的变量,修改如下:

#include<stdio.h>

int x;/*注意这里*/

void func(int);
main()
{
/*注意这里*/
func(1);
printf("er");
}
void func(int a)
{
x=a;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-15

当然可以。看下面的举例代码及注释:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
char str[]="This is a simple C program.";//定义一个全局数组
void show(char *q){//定义一个显示函数
    printf("%s\n",q);
}
int main(void){
    show(str);//用全局变量调用显示函数
    return 0;
}

第2个回答  2010-07-20
可以,但是你的这个X并不是全局变量啊,main也是函数,你在main里面声明的变量,只能在main里边用。你的解决方法是:

1.把x在main外部声明,就在func函数头前边;
2.把void func(int)改成int func(int),然后在main里边把func(1)改成x = func(1),当然func的函数实现也是int func(int a);
第3个回答  2010-07-20
x明显是局部变量,作用域只在main函数中
x定义在函数外部时,才是全局变量
比如
#include<stdio.h>
void func(int);
int x;
main()
{
int x;
func(1);
printf("er");
}
void func(int a)
{
x=a; (此时的x是外部的x,并非main中的x)
}
第4个回答  2010-07-20
void func(int); //void func(int a)

void func(int a)
{
x=a; (这里报错,说x还未定义)
}

这个X是什么类型?X没定义你怎么把a给x
{
int x;
x = a
return x;
}