(scope rules) , , . . , . : , . , .
, , . : . , . . , , . ( ) .
#include <stdio.h>
Void f(void);
Void main(void)
{
Int i;
i=1;
F();
printf( main i %d\n,i);
}
Void f(void)
{
Int i;
i=10;
printf( f() i %d\n,i);
}
, i, main() .
, . , . , .
, - . , . .
, . . . :
auto ; extern ; static ; register .
:
Static int sum;
Register int plus;
, auto. . , . (.. ) . , , , . , , . (register) . , , , , . , .
|
|
:
Register int quick;
(extern) . , :
Void f(void)
{
extern int j; /* */
}
. , . :
int var; /* var */
Void main(void)
{
extern int var; /* */
}
Func1()
{
extern int var1; /* var1 */
/* var , */
}
Func2()
{ /* var */
/* var1 */
}
int var1; /* */
Fun3()
{ /* var1 */
int var; /* var var */
/* */
}
Func4()
{ /* var */
auto int var1; /* var1 */
}
static. - . . , . . , .
static int count = 10; count count . , , . .
#include <stdio.h>
/* */
void trystat(void); /* */
Void main(void)
{
Int i;
for(i=1; i<=3; i++)
{
printf(Call # %d\n,i);
Trystat();
printf(Call # %d\n,i);
Trystat();
}
}
Void trystat(void)
{
int auto_l=1;
static int stat_l=1;
printf(auto_l=%d stat_l=%d\n,auto_l++, stat_l++);
}
() , . . static . . , , , . , , .
|
|
:
auto | |||
register | |||
static | |||
static | |||
extern |