<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中的全局变量,他在什么位置声明就是什么作用域的变量。
阅读全文
0 0
- C++Primer变量
- c++primer 2/22---变量
- c++primer笔记--2.2变量
- C++Primer 4 第二章 变量和基本类型
- <4>C++ Primer 变量
- 《c++primer》之 变量和类型
- C++Primer读书笔记之变量的默认值
- C++Primer 变量和基本类型
- 变量初始化规则 ----from c++primer
- c++Primer,二,变量和基本类型
- C++Primer 笔记之----变量和函数
- C++primer 2.2 变量--全局与局部
- c++primer 要点-变量和基本类型
- C Primer Plus学习 三十六 寄存器变量
- 《C Primer Plus 》--C++处理数据-变量
- C++Primer笔记--变量和基本类型
- c++primer学习笔记-----2.2变量
- C++Primer——变量、引用、指针
- java中的多线程
- bzoj2209 [Jsoi2011]括号序列(splay)
- 图文详解MyEclipse中新建Maven webapp项目的步骤(很详细)
- 理解zookeeper选举机制
- CodeForces 893B Beautiful Divisors
- <4>C++ Primer 变量
- ubuntu下ping www.baidu.com 出错误
- 深度优先遍历 广度优先遍历JAVA
- Zookeeper安装过程中的坑
- Laravel-admin之修改操作日志
- 服务器环境搭建
- 项目中最近遇到的一些bug
- KMP算法的实现及优化
- GCC 版本下载地址,这里比较全,gcc版本一定要对应,不然就会各种不兼容依赖,把人折腾疯了