1.文字常量(literal constant)
char,int,short,long,float,double,long double,boolean
for example: 128u,1024L,7LU,3.14f,'a',"aa",true
转义序列:一部分不可打印的字符,如换行,制表,单引号,双引号等。
(\n,\t,,\v,\b,\r,\f,\a,\\,\?,\',\")
宽字符文字:字符文字前面加上L,例:L'a'。宽字符常量用来支持某些语言的字符集合如汉语,日语这些语言中的某些字符不能用单个字符来表示。
2.变量
C++k中的每个符号变量都与一个特定的数据类型相关联,这个类型决定了相关内存的大小,布局,能够存储在该内存区的值的范围以及可以应用其上的操作集。
例如:
int student_count;
double salary;
bool on_loan;
string street_address;
char delimiter;
变量和文字常量都有存储区,并且有相关的类型。区别在于变量是可寻址的。
每个变量,都有两个值:
1.数据值,存储于某个内存地址中。被称为右值,即被读取的值。文字常量和变量都可被用作右值。
2.地址值,存储数据值的那块内存的地址。它有时被称为变量的左值,即位置值。文字常量不能被用作左值。
在C++中,程序在使用之前必须先知道该对象。可以通过对象声明来实现,它的作用是使程序知道该对象的类型和名字。由关键字extern以及跟在后面的对象类型以及对象的名字构成。声明不是定义,不会引起内存分配。一个程序只能包含一个对象的一个定义,却可以包含任意数目的对象声明。可将声明放于头文件中。
变量名可由数字,字母,下划线组成。以字母或下划线开头,区分大小写。对长度不限制。不能使用C++的关键字。在实际开发中,变量名通常取代表实际含义的英文字母。
对象的定义
类型指示符+名字,分号结束。例如:unsigned long distance;
如果变量是在全局域定义的,系统提供初始值0。如果是局部域的,或是通过new表达式动态分配的,系统不提供初始值0。这样的对象是未初始化的,它们不是没有值,而是未定义。
C++支持两种形式的初始化。
一种是使用赋值操作符的显式语法形式:int ival=1024;
第二种是隐式形式:int ival(1024);
每种内置数据类型都支持一种特殊的构造函数语法,可将对象初始化为0。例:int ival=int();
对象可以用任意复杂的表达式来初始化,包括函数的返回值。
指针
指针持有另一个对象的地址,使我们能够间接地操作这个对象。
通过在标识符前加一个解引用操作符(*)来定义指针。例:
int *p1,p2;
complex<double> *cp;
当指针持有0值时,表明它没有指向任何对象,或持有一个同类型的数据对象的地址。
空(void*)类型指针,它可以被任何数据指针类型的地址值赋值(函数指针不能赋值给它).
不能操作空类型指针所指向的对象,只能传送该地址值或将它与其他地址值作比较。
C++提供了解引用操作符(*)来间接地读和写指针所指向的对象。
int ival=1024;
int *pi=&ival;
int **ppi=πppi是指向int指针pi的指针。
int *pi2=*ppi;
要访问到ival,需要两次解引用ppi.*ppi
指针可以让它的地址值增加或减少一个整数值。称为指针的算式运算。典型用法是遍历一个数组。
字符串类型
C风格字符串