C++学习笔记(一)

一、语法学习

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变量的初始值,得到的类型是指针而非数组。

原文地址:https://www.cnblogs.com/hifelix/p/5924771.html