int x;
x就是我声明的一个变量。这个x申请了一块内存,申请了一块int型的内存,里面也只能存放int型的数据。
这个就和往冰箱里放东西是一样的,肉啊,鱼,剩菜,用保鲜膜封好了,各占各的地方,省得串味。
extern int yl;
这个就是当你写了两个cpp文件,想在其中一个cpp中调用另外一个文件的y1时,写的前缀,extern。
这就相当于,在这个冰箱里拿肉,结果盘子里没有,并且有一张纸条告诉你得去另一个冰箱拿。
int x;
这个叫缺省初始化,只给它声明了,没说里面放的具体是啥值。
int x=10;
直接初始化,直接就告诉了,x=10.
int x(10)
拷贝初始化,和直接初始化一样。
局部变量与全局变量
函数中定义的变量称为局部变量
int func(int a)
{
cout<<a;
}
int main()
{
int a;
func(a);
}
这不同的函数不同的语句块中定义的相同名字的变量,虽然他俩名称相同,但是仍然是不同的变量,代表不同的存储空间。
每次调用函数时,局部变量都表示不同的存储空间。局部变量在每次函数调用就给它分配存储空间,每次调用完,函数返回的时候就释放存储空间。
全局变量就不同了,全局变量声明在所有函数体外,在程序开始前分配存储空间,在程序结束后释放存储空间,任何的函数体都能调用全局变量,声明周期长的很。
那么当
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int hour=23;
int minute=50;
void func()
{
cout<<hour<<":"<<minute<<endl;
}
int main()
{
int hour=0;
int minute=1;
cout<<hour<<":"<<minute<<endl;
func();
}
全局变量和局部变量命名相同的时候有个原则叫,就近原则,就是现考虑我这个作用域的名称,找不到了才再去全局找。