<4>C++ Primer 变量

来源:互联网 发布:土库曼斯坦 知乎 编辑:程序博客网 时间:2024/06/06 01:53

一、变量

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.cppusing 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.cppint 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中的全局变量,他在什么位置声明就是什么作用域的变量。




原创粉丝点击