一、变量
1.什么是变量
变量是提供一个具名的、可供程序操作的存储空间。
也就是说变量,具有自己独特的名字,存储空间和公共类型。
对于c++程序员来说,变量(variable)和对象(object)一般可以互换使用。
#include<iostream>
using namespace std;
class Dog
{
};
int main()
{
int i;
Dog dog;
}
这里的i和dog都是变量或者说对象。
2.左值和右值
#include<iostream>
using namespace std;
int main()
{
int i=10;
i = i + 2;
}
在i=i+2;这行代码中,左边的i为左值,右边的i为右值,
左边的i表示i的地址,右边的i表示i的值,也就是说把i的值+2在赋给i的地址。
也可以理解为左值在等号左边,右值在等号右边,且常数不能为左值。
3.定义和声明
#include<iostream>//Source.cpp
using namespace std;
int i = 0;//定义
extern int j;//声明
extern double pi = 3.14;//定义
int main()
{
cout << i <<" "<<j++<< endl;
cout << pi << endl;
system("pause");
return 0;
}
//Source1.cpp
int j = 1;//定义
//double pi = 3.14159;//定义
//一个工程中可以有两个CPP文件
//但是不能有两个主函数
1)简单来说,定义就是定义一个变量(对象),为一个变量分配空间,和初始化他的值。在一个工程中同名变量只能存在一个(单指全局变量)。
2)而声明则是说明我要用一个变量了,也就是声明要用一个已经存在的变量。如上所示,在Source1.cpp中定义了j,在Source.cpp中就可以声明j对其进行使用。
3)对一个声明进行初始化则他就不再是一个声明而是一个定义了,因为声明是不会分配空间的,而初始化会分配空间,也就使得声明变成了定义。如上所示,两个cpp文件中的pi定义是不可共存的。
4.作用域
#include<iostream>
using namespace std;
int i = 20;
void test()
{
int i = 50;
}
int main()
{
int i = 100;
for (int i = 0; i < 10; i++)
{
cout << i<< endl;
}
cout << i << endl;
cout << ::i << endl;
system("pause");
return 0;
}
1)全局作用域:等于20的i为全局作用域,他从定义后开始存在,直到工程结束为止删除。
2)局部作用域:等于50的i和等于100的i为局部作用域,他们作用于test函数和main函数中,从定义开始存在,函数结束后删除。
3)语句作用域:for循环中的i为语句作用域,作用于for循环中,循环结束删除。
4 )变量屏蔽 (隐藏):在main函数中会优先使用i=100的i,在for中会优先使用i=0的i,我们也可以通过::i的形式使用全局变量中的i。
5)Source.cpp中声明的是Source1.cpp中的全局变量,他在什么位置声明就是什么作用域的变量。