C++要点
- 短路逻辑运算符:
- 了解运算符
&&
、||
的真值表:
x y x&&y x||y 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 1 - 要点:对于常见的编译器,一旦运算符左值表达式的结果可以决定最终结果,将不再进行右值表达式的运算!
(这就是短路的含义)
- 了解运算符
- 递归的识别;
++
、--
的左右放置的区别;- 释放动态储存:
delete EXPRESSION
与delete [] EXPRESSION
; []
优先级问题:
int *p[5]
是一个一维数组,元素是整形int指针;
int (*p)[5]
是一个指针,指向一个5元素int数组;
区别在于第一个的[]
运算符先与p结合,使之变成数组;- 多维数组初始化可以省略最高维的长度说明:
int a[][3] = {1, 2, 3, 4, 5, 6};
手写程序的要点
- 想好自己要写什么过程,什么变量储存什么,有什么循环结构,and etc;
就是像高中数学讲过那样写结构图; - 想好究竟是多函数还是撑死一个
main()
函数;
Tag: 撑死在主函数时候会造成语句块过长的问题,容易遗漏或者多写括号; - 想想头文件以及命名组
namespace
的问题:-
//namespace std
std::cin
std::cout
std::string //c++自带的字符串类
… -
//iostream
std::cin
//eg. cin.get(); cin.getline(char *, int);
std::cout
//eg. cout.put(char *); cout.flush();
… -
//iomanip
见到什么cout << setw(n);
或者cout << oct << dec << bin << hex;一流的输出控制都是 -
//cmath或math.h
sin(), cos(), tan();
上面的反函数也有;
WARNING: 角度为弧度制!!!
绝对值abs(), fabs();
后者返回浮点,前者返回整形!!!
开根sqrt(), 自然对数ln(), e的次方exp();
常见的数学函数都是它。 -
//cstdlib或stdlib.h
int rand();返回一个1000以内伪随机整数,按需用取余;
取用前用种子进行初始化:
void srand(unsigned int);
种子常用时间int time(0); 引用于ctime/time.h
-
- 在一个函数调用另一个函数时候,想一想:
这个函数在前面提到过没有?如果没有,写上函数原型吧,然后在后面再写上实现也是可以的:void b();
void a() {
b();
}
void b() {
blablabla;
} - 表达式括号写够没有?如果忘记了运算符的优先级问题,善用括号;
- 语句块(一对花括号)的花括号有没有漏掉或者多写,一层层分析;
- 分号!分号!分号!
- for语句有三块东西!分号隔开!
for语句有三块东西!分号隔开!
for语句有三块东西!分号隔开! - 乘法用星号!乘法用星号!乘法用星号!
- 不能使用乘方符号
^
以及连续不等式a <= x <= c
,区别=
与==
; - 非void函数记得返回哦;
- struct与class的定义完了加分号。