一、语法学习
1、定义了一套算数类型(arithmetic type)和空类型(void)的基本数据类型
(1)算数类型:分两类整形(integral type,包括字符(char),整形(int),布尔(bool))和浮点类型(float),类型的尺寸根据机器的不同,长度也有所不同。
除去布尔类型和扩展的字符类型意外,其他证书类型可以划分为带符号的(signed)和无符号的(unsigned)的两种。带符号的可以标识正数,负数,0,无符号的只能表示大于等于0的值。
与其他整数类型不同,字符型被分为了三种:char,signed char和unsigned char。字符类型表现形式只能表现两种:带符号的和不带符号的,char和signed char不同,char只能表示两种类型的一种,具体有编译器决定。
注意:1、执行浮点计算尽量用double,因为float精度不够,单精度和双精度计算代价相差不多。
(2)空类型:不对应具体的值
2、声明与定义的区别
声明和定义都规定了变量的类型和名称,但是定义还申请了存储空间,也可能会为变量赋予一个初始值。
extern int i; //声明了i而非定义了i int j; //声明并定义了j
变量能且只能定义一次,但是可以被多次声明
3、变量标识符定义规范
C++标识符由字符、数字和下划线组成,必须以字母和下划线开头,对大小写敏感。定义的标识符不能够同时连续出现两个下划线,也不能下划线紧跟大写字母开头。定义在函数体外的标识符不能以下划线开头。
4、数组
int *(&arr)[10] = prts; // arr是数组的引用,该数组有10个指针
想要理解数组声明的含义,最好的方法是从数组的名字开始按照由内向外的顺序阅读。
首先知道arr是一个引用,然后观察右边知道arr引用的对象是一个大小为10的数组,最后观察左边知道,数组的元素类型是指向int的指针。
数组除了固定大小以外,其他用法和vector基本类似。
unsigned scores[11] = {}; //11个分数段,全部初始化0 unsigned grade; while (cin >> grade) { if(grade <= 100) { ++scores[grade/10]; //将当前分数段计数值加一 } }
--指针和数组
使用数组的时候,编译器一般会把它转换成指针。
指针指向数组第一个元素例子
string nums[] = {"first", "second", "third"}; string *p = &nums[0]; // p指向nums的第一个元素 //string *p2 = nums; 等价于 p2 = &nums[0];
由上面可以推断出使用数组作为auto变量的初始值,得到的类型是指针而非数组。