计算机处理的对象是数据,数据包括常量和变量,它是以某种特定形式存在的,C++可以使用的数据类型包括以下,数据结构是数据的组织形式,包括数组、表、树、栈等。
c++标准没有规定每种数据类型所占字节的大小,只做了建议,因此每种编译器都不同。
常量的分类–文字常量(Literal Constant)和常变量(Constant Variable)
- 文字常量
文字常量又称为“字面常量”,包括数值常量、字符常量和符号常量。其特点是编译后成为立即数写在代码区,不可寻址,不可更改,属于指令的一部分(注意与后面的字符串常量的区别)
1)数值常量:包括整型常量和实型常量(注意整形常量没有无符号的说法),编译系统根据数值的大小确定类型;
2)字符常量:指ASCII字符,有128个,分为普通字符和转义字符。普通字符指可直接书写的字符,如’a’和’b’。转义字符指不能直接书写的特殊字符,需要使用反斜杠进行表示,比如’\t’表示水平制表符,’\v’表示垂直制表符;
3)符号常量:用标识符代表一个常量,使用之前必须定义。例如宏定义和枚举元素。 #define NUM 100 //NUM为符号常量,100为整型常量,enum Weekday{SUN, MON, TUES, WED, THU, FRI, SAT}; //SUN,MON等均为符号常量 。
4)布尔常量 - 常变量(存放在内存常量区)
常变量指定义时必须显示初始化且值不可修改的变量。与其他变量一样被分配空间,是可以寻址的**。注意,字符串常量是常变量的一种,名称为其本身,存储在代码段,可寻址,不可修改**。
cout<<&”hello world”<<endl; //打印输出字符串常量”hello world”存储地址
常变量在C/C++中由const关键字来定义,分为全局常变量和局部常变量。二者的区别在于:全局常变量存储在代码段的只读内存区域,不可修改有操作系统来保障,局部常变量(类如函数的形参就是这样)存储在栈区,在编程语言语义层面上由编辑器做语法检查来保障其值不可修改,因不是放在只读内存中,可以获得局部常变量的地址,运行时间接进行修改。
变量:
1)命名规则
a.标识符的定义:用来标识变量、符号常量、函数、数组、类型等实体名字的有 效字符序列–就是名字,变量名是标识符的一种。规定只能用字母、数字和下划线3种字符构成,且第一个字符必须使用字母或者下划线,也就是说不能用数字;
b.变量名的一般用小写字母表示(函数名等其他标识符以后再说)命名有匈牙利变量命名法(在变量名前面加一个字母标识变量的类型icount)、骆驼表示法(几个单词组成变量名,小写开头,后面单词第一个字母大写studentName)、中国命名法(几个单词组成变量名,中间用下划线,number_of_number)
2)变量定义
数据类型 变量名;
c/c++是强制性语言,需要先定义后使用,目的有3点:
a.保证程序里面没有定义的名称编程提前发现;
b.编译的时候根据分配空间;
c.在编译的时候对变量的操作提前判断时候合法,如将浮点数复制给整数变量。
3)P28有待考证。
注意事项:
1)字符串常量长度要加上空字符‘\0’;
2)c++是强定义语言,要先定义后使用,c语言要求所有的变量应该放在所有执行语句之前(老标准,现在也像c++看齐),c++放松了要求,只要在第一次使用之前定义即可;
3)#define 指令定义符号常量,在预处理期间就被替换,不占任何的空间,C的习惯,C++一般喜欢用常变量本质上还是变量,书上不加区分,都叫常量。