作用域
#include <stdio.h>
int main(void){
// 作用域各不相同,嵌套内部的同名变量会代替外部的变量
int i = 100;
{
int i = 110;
{
int i = 120;
printf("i = %d\n", i);
}
// i = 110 变量i仍为110
{
printf("i = %d\n", i);
int i = 130; // 屏蔽后i为130
printf("i = %d\n", i);
}
printf("i = %d\n", i);
}
printf("i = %d\n", i);
}
函数参数声明
#include <stdio.h>
void func(void);
int main(void) {
extern int count;
func();
count++;
printf("In main, count = %d\n", count);
return 0;
}
int count;
void func(void){
count++;
printf("In func, count = %d\n", count);
}
/*
* In func, count = 1
* In main, count = 2
* */
需要声明全局变量的重要性
定义和声明
当一个变量被定义的时候,编译器为变量申请内存并填充一些值
当一个变量被声明的时候,编译器就知道该变量被定义在其他地方
声明是通知编译器该变量名及相关的类型已存在,不需要再为此申请内存空间
局部变量既是定义又是声明
定义只能来一次,否则就叫做重复定义某个同名变量,而声明可以有很多次