应该是说:
C语言中一个变量的作用域的开始位置只取决于它在函数的定义位置。
提前是可以改变。
对,C语言中一个变量的作用域的开始位置只取决于它的定义位置。
提前声明不是也可改变作用域吗?
提前声明会改变作用域。
声明和定义是两回事,虽然声明和定义往往混在一起。比如,int i是一个定义性声明,而extern int i则是一个引用声明。
首先楼主说的具体,不全面!
变量分为全局变脸和局部变量,对于全局变量它的作用域的开始位置取决于它的定义时的相对位置,但对于局部变量,则在定义的那个函数内可以使用!
但是全局变量这种从那定义从那开始也可以改变,一般用extern来增大它的作用域。举个列来说明吧!
#include
void main
{
int a,b;
a=3;
b=3;
c=a+b;
printf("c=%d\n",c);
}
int c;
void echange(int x,int y)
{
c=x+y;
}
从这里可以看书,c是全局变量,但是其定义是在main函数后,所以main函数不能使用c ,只有void echange可以使用,所以编译时会提醒main函数中的c没有定义。
但如果想c在main中也可以用,可以像如下定义
#include
void main
{
extern c;
int a,b;
a=3;
b=3;
c=a+b;
printf("c=%d\n",c);
}
int c;
void echange(int x,int y)
{
c=x+y;
}
这里面就用extern把c的范围扩大到了main中,所以其作用域就不仅仅开始与其定义的地方。
c中的这些变化是很灵活的,楼主主要是基础工扎实啊。细心也要的!