C++变量
变量提供了一种具体名字的,可供程序操作的存储空间。C++中每个变量都有其数据类型,数据类型决定着变量所占内存空间的大小和布局方式、该空间能存储的值得范围,以及变量能参与的运算。
变量名: 变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,因为 C++ 是大小写敏感的。
变量类型
有以下几种基本的变量类型:
变量定义
变量定义的基本形式是:首先是类型说明符(type specifier),随后紧跟一个或者多个变量名组成的列表,其中变量名之间以逗号分隔,最后一分好结束。如下所示:
type variable_list1,variable_list2;
列表中每个变量名的类型都由类型说明符指定,定义时还可以为一个或者多个变量赋初值。
例如:
int sum = 0,value,units_sold = 0; // sum、value 和 units_sold 都是 int 类型, sum 和 units_sold 的初值为 0。
Sales_item item; // item 的类型是 Sales_item
std::string book(" 0-201-78345-X "); // string是一种库类型,表示一个可变长度的字符序列
不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。
变量声明
为了允许把程序查分成多个逻辑部分来编写,C++语言支持分离是编译(separate compilation)机制,该机制允许将程序分为若干个文件,每个文件可被独立编译。
如果将程序分为若干个文件,则需要有在文件间共享代码的方法。例如,一个文件中的代码可能需要使用另一个文件中定义的变量。一个实际的例子是 std::cout 和 std::cin, 它们定义于标准库,却能被我们写的程序使用。
为了支持分离式编译,C++语言将声明和定义区分开来。声明(declaration)使的名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明。而定义负责创建与名字关联的实体。
变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。如果想声明一个变量而非定义它,就在变量名前添加关键字extern,而不要显示的初始化变量:
extern int i; // 声明 i 而非定义 i
int j; // 声明并定义 j
任何包含了显示初始化的声明即成为定义。我们能给由 extern 关键字的变量赋值,但是这么做也就抵消了 extern 的作用。extern 语句如果包含初始值就不再是声明,而变成定义了:
extern double pi = 3.1416; // 定义
在函数体内部,如果试图初始化一个由extern 关键字标记的变量,将引发错误。
实例
#include <iostream>
using namespace std;
// 变量声明
extern int a, b;
extern int c;
extern float f;
int main ()
{
// 变量定义
int a, b;
int c;
float f;
// 实际初始化
a = 10;
b = 20;
c = a + b;
cout << c << endl ;
f = 70.0/3.0;
cout << f << endl ;
return 0;
}
执行结果:
30
23.3333