C++ Primer知识系列一:预备知识、数据及基本类型
1、预备知识
编程过程:源代码(.cpp) → 编译器 → 目标代码(.obj) → 链接程序(启动代码及库代码) → 可执行代码(.exe)
注释://单行,/*多行*/;C++对大小写敏感;预处理器编译指令:#include;变量使用前必须声明。
2、处理数据
没有任何一种整型和浮点型可以满足所有的编程要求。
变量名:只能使用字母字符,数字和下划线;第一个字符不能是数字;不能为关键字;以两个下划线或下划线和大写字母开头的变量名被保留给实现使用。
整型:
1字节=8位,1byte=8bits;sizeof返回类型或变量的字节长度
类型 | 位数(有效位数) |
---|---|
short | ≥ 16位 |
int | ≥ short(5) |
long | ≥ 32位 ≥ int(10) |
long long | ≥ 64位 ≥ long(19),后缀LL |
十进制:第一位0~9;八进制:第一位0,第二位1~7;十六进制:前两位0x。
char类型(字符或小整型):
字符使用单引号,字符串使用双引号。
类型 | |
---|---|
char | -127~128 |
unsigned char | 0~255 |
wcha_t | wcin,wcout,前缀L |
char16_t | 16位,前缀u |
char32_t | 32位,前缀U |
const限定符 const 类型 变量名=变量值;必须初始化
浮点数:
类型 | |
---|---|
float | ≥ 32位 |
double | ≥ 48位 ≥ float(一般64位) |
long double | ≥ double |
cout.setf(ios_base::fixed,ios_base::floatedfield)防止使用E表示法,使用定点表示法。
浮点常量:默认double,float使用f后缀,long double使用L后缀。
缩窄:变量类型可能无法赋给它的值。
类型转换:强制转换:(类型) value或 类型(value)
auto:不指定变量类型。
3、复合类型
数组:
声明:类型 数组名[大小],数组下标从0开始。
初始化:={value1,value2,value3,…}禁止缩窄。
只有在定义数组时才能初始化且不能将一个数组赋给另一个数组;提供元素个数小于大小;只对数组一部分元素初始化,其他元素设置为0;初始化时[]可为空。
字符串:字符串以’\0’结束;char c[]=”…”;strlen计算可见字符长度;cin以空白(空格、换行和制表符)来确定字符串结束位置;cin.getline(数组名,字符数)自动在结尾处添加’\0’,遇到换行符停止;cin.get(数组名,字符数)会保留换行符在输入队列中;cin.get()读取下一行。
结构:
定义结构:struct 结构名 {成员;……};
创建结构变量:结构名 变量名;初始化 = {成员值1,…..};访问成员:”.”
结构数组:结构名 数组名[] = {{…},{…},…}
共用体:与结构类似,但只能存储其中一种类型
枚举:
enum 创建符号常量:enum 枚举名{枚举量…(从0开始)}。
枚举名 变量名; 变量名=枚举量(是整型,可以提升为int,但int不能转换为枚举);变量名=枚举名(有效整数)。
enum bits{one=1,two=2}可以设置枚举量的值
指针:是一个变量,存储的是地址。
类型* 指针变量 = 地址;*指针变量 指针指向地址的值;一定要在对指针变量应用解除引用运算符(*)前,将指针变量初始化一个确定地址。
使用new来分配内存:类型* 指针变量=new 类型;使用delete来释放内存:delete 指针变量;只用new创建动态数组:类型* 指针变量 = new类型[size] (delete[] 指针变量),不能用sizeof来确定动态数组的字节数,指针变量可直接当数组名使用。
指针运算:指针变量+1:增加他指向的类型的字节数;指针变量[i] = *(指针变量+i),数组名为第一个元素地址,但对数组名应用&得到的是整个数组的地址。
使用new创建动态结构:结构名* 指针变量 = new 结构名;使用指针 → 或(*指针变量)访问成员。