普通变量
叫做 普通局部变量
{}
复合语句之间有效{}
复合语句之间有效(1)、普通局部变量 不初始化 内容 不确定
(2)、普通局部变量 重名 就近原则(尽量别重名)
void test02()
{ // 复合语句
int num = 10; // 局部变量
{
int num = 20; // 局部变量
printf("num = %d\n", num); // 就近原则
}
printf("num = %d\n", num);
}
int main(int argc, char const *argv[])
{
test02();
return 0;
}
(1)、全局变量不初始化,内容为 0
(2)、全局变量 和 局部变量 重名,优先使用 局部变量(就近原则,最好不要这么干)
int data = 10; // 普通全局变量不初始化,内容为 0
void test03()
{
int data = 20; //普通局部变量
printf("data = %d\n", data);
}
int main(int argc, char const *argv[])
{
test03();
return 0;
}
(3)、其他文件使用全局变量必须对全局变量使用extern声明,extern声明外部可用,该变量或者函数来自于其他源文件(变量的使用所在的源文件)
extern void add(); // 来自于其他源文件的函数
int data = 10; // 普通全局变量不初始化,内容为 0
void test03()
{
printf("本文件中的data = %d\n", data);
add();
}
int main(int argc, char const *argv[])
{
test03();
return 0;
}
// extern声明int类型的data数据,该数据来自于其他源文件
#include
extern int data;
void add()
{
data = data + 1;
printf("来自于其他文件的 data = %d\n", data);
}
多文件编译是为了让编译器知道本文件引用了哪些外部文件的变量!!!!!!!
(1)、静态局部变量不初始化,内容为 0(因为它在全局区)
(2)、静态局部变量整个进程都存在
#include
void test05()
{ // 测试static定义的变量在进程有效
int num = 10;
num++;
printf("num = %d\n", num);
}
int main(int argc, char const *argv[])
{
test05();
test05();
test05();
test05();
return 0;
}
#include
void test05()
{ // 测试static定义的变量在进程有效
static int num = 10; //第一次定义有效
num++;
printf("num = %d\n", num);
}
int main(int argc, char const *argv[])
{
test05();
test05();
test05();
test05();
return 0;
}
(1)、静态全局变量不初始化 内容为 0(因为它在全局区)
(2)、只能在当前文件使用,而不能在其他源文件使用