一个开发菜鸟对C++的知识回顾。
笔记地址
Hello C++
#include
查看GNU的C/C++编译器
$ g++ -v
C++ 环境设置教程 https://www.codercto.com/courses/d/2610.html
编译 & 执行 C++ 程序
接下来让我们看看如何把源代码保存在一个文件中,以及如何编译并运行它。下面是简单的步骤:
$ g++ hello.cpp $ ./a.out Hello World
C++中 "\n" 与 endl 的区别是什么?
"\n" 表示内容为一个回车符的字符串。std::endl 是流操作子,输出的作用和输出 "\n" 类似,但可能略有区别。std::endl 输出一个换行符,并立即刷新缓冲区。
例如:
std::cout << std::endl;
相当于:
std::cout << '\n' << std::flush; 或者 std::cout << '\n'; std::fflush(stdout);
必要情况下使用 endl 代替 '\n' 一般是个好习惯。
对于无缓冲的流(例如标准错误输出流cerr),刷新是不必要的,可以直接使用 '\n'。
cout 流速度较慢,如果速度过慢可以用
#include
C++ 保留关键字
if...else...等 https://www.runoob.com/w3cnote/cpp-keyword-intro.html
virtual是定义C++中虚函数的关键字
注释:
/* 这是注释 */ /* C++ 注释也可以 * 跨行 */ //还可以使用 #if false ... #endif #if true code1 #else code2 #endif
c++ 数据类型
不常用的类型(底层实际是typedef 定义的)
wchar_t :宽字类型(wide char type) wchar_t 实际上的空间是和 short int 一样。
size_t :整型类型 保存的是一个整数,用来记录一个大小(size)
ptrdiff_t :pointer difference type, 一种用来记录两个指针之间的距离的数据类型 。
可以用 typedef 来定义与平台无关的类型。
比如定义一个叫 FALSE 的浮点类型,在目标平台一上,让它表示最高精度的类型为:
typedef long double FALSE;
在不支持 long double 的平台二上,改为:
typedef double FALSE;
在连 double 都不支持的平台三上,改为:
typedef float FALSE;
也就是说,当跨平台时,只要改下 typedef 本身就行,不用对其他源码做任何修改。
typedef 与 #define 的区别
#define f(x) x*x
typedef int * pint; #define PINT int * const pint p1 = &i1; //p不可更改,p指向的内容可以更改,相当于 int * const p; const PINT p2 = &i2; //p可以更改,p指向的内容不能更改,相当于 const int *p;或 int const *p; pint s1, s2; //s1和s2都是int型指针 PINT s3, s4; //相当于int * s3,s4;只有一个是指针。
C++ 变量类型
extern 关键字声明在变量和函数之前的说明。
判断语句
if (NULL == a)//可行 ,判断指针a是否为空。在实际项目中,为了防止将“==”误写作“=”推荐讲变量名写在右侧,编译器可以帮助寻找错误
C++ 变量作用域
三个地方可以定义变量:
当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动初始化为下列值。
笔记:
局部变量和全局变量的名称可以相同。但是在函数内的局部变量与全局变量是两个独立的变量,互不影响。(局部变量在局部中会替代全局变量)
#include
static 全局变量:改变作用范围,不改变存储位置
static 局部变量:改变存储位置,不改变作用范围
常量笔记:
三种形式所显示的字符串是相同的
"hello, dear" "hello, \ dear" "hello, " "d" "ear"
把常量定义为大写字母形式,是一个很好的编程实践。
const 后的常量,程序对其中只能读不能修改。
c