C/C++运算符优先级
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
同优先级别按结合顺序计算,一般是从左到右,但有三个例外,是从右到左计算,分别是单目运算符,条件运算符,赋值运算符。
Q:int p[2] = [12, 34],*p++打印出来是多少?
A:先自增,再指针指向其首地址,为3
内存中堆与栈的浅析
为了解决栈溢出,内存泄露
栈内存(连续,1M),而堆内存(链表不连续,4G)
性能:栈>堆
OS级的数据结构(栈)
C/C++函数库(堆)堆= new()/delete()
内存:数据区,代码区。5个细部:全局(静态)区,栈,堆(与数据结构中的堆是两码事),常量字符串区,程序代码区(放函数体的二进制代码)
数据区即变量(栈,堆)。代码区(常量字符串,全局静态,函数体)
函数的调用=动态使用栈,不占内存
void f(){int *p = new int[5];}
在栈内存中存放了一个指向一块堆内存的指针p。程序先在堆中分配函数内存大小,在new分配内存,然后返回这块内存的首地址,放入栈中。
基本数据机构
char(1字节), short, int, long, enum(4字节), float(8字节), double, longdouble, pointer, void, union, struct, array,(如何判断入栈) function
1字节(即存储单位)为8比特(位)
继承与多态
类class或对象object的成员
成员分别有静态字段、静态方法、类方法、特性、普通字段、普通方法、
限制说明符 基本数据结构及函数的成员(即实参、形参){...}
限制说明符:静态static,常量const;
继承方式:public > protected > private,private无法继承
多态,父/子类成员,虚函数
二维数组是栈内存分配,地址连续
继承的重写,重载
参数与变量的区别
引用
引用类成员=构造函数(初始化(列表,赋值(0值参数)),默认(空参数))
传参,传引用类型
传参 = 调用拷贝构造函数,而传值不会。
调用函数和类函数的区别。变参函数,指针
不显式默认构造函数的前提,传参空还是有,判断是函数还是类类型
指针
const char *p = ‘asd’;常量字符串,不可变
char const * p = ‘dsa’;常量指针,不可变
字符串数列与普通字符数列
字符串数列char a[]={1234} 长度+1自带打印\n
普通字符数列char b[]={‘1’, ‘2’, ‘3’, ‘4’}
基类至少带一个虚函数才支持运行时多态
整个标准库和语言本身浑然一体。这样子做的好处是,当你在培养对语言本身的直觉的时候,你也在培养对标准库的直觉,培养直觉这件事情你不用做两次。你对一个东西的直觉越准,学习新东西的速度就越快。所以C++的设计刚好可以让你在熬过第一个阶段的学习之后,后面都觉得无比的轻松。
程序-设计模式-算法+/-数据结构-数据表达式-数据类型-输入输出记录变量(单调性,边界条件)-取内存-取地址
argument 调用的实参。arg
parameter 形参等价于*arg
/ 仅传递一个实参
object 对象
iterables可迭代
variable 变量