区别C
1、ANSI C有32 个保留字(89year),ANSI C++有32+29=61个保留字(98year)
2、ANSI C++有char int float double bool wchar_t(unsigned short双字节字符型)等基本类型
3、float型加f 如2.0f 默认为double型 long int 型加l long double 型加l
4、内联函数 必须在声明时inline
不能含有复杂的控制语句 如while switch
5、重载函数 至少在参数类型、参数个数或参数顺序上有所不同。
6、形参可以给默认值
如 void delay(int loops=1000);多个形参时, 默认参数从右往左排,不能乱排。
调用时可以不给实参。
这种方式可以将某些重载合并。
默认值可以是全局变量或函数值,但不能是局部变量。
既有声明又有定义时 只能在声明中给默认参数
7、外部存储类型 extern 的用法
函数的声明和定义默认情况下在整个程序(多个文件)中是extern的
构成程序的多个源文件之间通过生命数据或函数为extern来进行沟通.
8、静态全局变量 static
对组成该程序的其他源文件是无效的。
因为函数默认是extern的,为了使它只能在一个文件中使用,用static
const默认为static inline函数默认为static
9 引用不是数据类型. 为了保护式餐不馁修改,出第const指针和引用
使用引用 ,函数不再只能返回一个值,功能更加强大
对使用堆的引用:
必要时用值传递参数
必要时返回值
不要返回又可能退出作用域的引用
不要引出空目标
10 头文件一般包括
类型声明
函数声明
内联函数定义
数据声明 如 extern
常数定义
枚举
包含指令
宏定义
注释
不应该包括
一般函数定义
数据定义
常量聚集定义 如 int a[]={1,3,4};
11 存储区域:代码区 数据区 栈区 堆区
12 条件编译指令
例如 符号NULL在好几个头文件中都有定义, 一个源文件可能包括多个头文件,为了避免出现 :一个符号重复定义多次的错误,在每个头文件中定义它的地方 这样写
#ifndef NULL
#define NULL 0
#endif