一、#include “filename.h”和#include <filename.h>的区别 S(b5Gj/Kd
J6s55
v
#include “filename.h”是指编译器将从当前工作目录上开始查找此文件 potb6jc?
POouO/r$
#include <filename.h>是指编译器将从标准库目录中开始查找此文件 `B4Px|3
,Z"l3~0\
#3L=\j[
y
二、头文件的作用 }"{NW!RfP
cHG>iW 9C
加强安全检测 ti)4J2c,8
rf%NfU
通过头文件可能方便地调用库功能,而不必关心其实现方式 .).*6{_
`c-(1;Jb
~5f|L(ODX
三、* , &修饰符的位置 QvF UFawN
[8sL);pJO
对于*和&修饰符,为了避免误解,最好将修饰符紧靠变量名 %NI'PXpI
N;.cZp2
Lh M{d
四、if语句 6EeUiLd
!{L6
4qI
不要将布尔变量与任何值进行比较,那会很容易出错的。 S(5aJ[7Zm
DJF-J#
整形变量必须要有类型相同的值进行比较 qZ:-- ,9+
p(5'|eqBV
浮点变量最好少比点,就算要比也要有值进行限制 Hsoe?kUHF
}k-rOi'jL
指针变量要和NULL进行比较,不要和布尔型和整形比较 SLiQHWw*J
*Y2d!9F}Sa
9=-!~_'1-
五、const和#define的比较 u}[Z=V
|0wUOs*5
const有数据类型,#define没有数据类型 9%VNzPzf
[P*w$Hn
个别编译器中const可以进行调试,#define不可以进行调试 h2Pvj37
bN#)F
在类中定义常量有两种方式 I'_.U]An
(S@H'G"
1、 在类在声明常量,但不赋值,在构造函数初始化表中进行赋值; Ux2pqPb
ON$^_l/c
2、 用枚举代替const常量。 &f\ng{
L%7?o:
|VC/(A
六、C++函数中值的传递方式 Z~.3)6,z
05<MsxB"w
有三种方式:值传递(Pass by value)、指针传递(Pass by pointer)、引用传递(Pass by reference) u.}z}'-
&UWSf
void fun(char c) //pass by value )eFq0+6*)
^c9~~m16+
void fun(char *str) //pass by pointer *d,u)l :S
k($N_XlE
void fun(char &str) //pass by reference TT(dCHft
hE-u9i
如果输入参数是以值传递的话,最好使用引用传递代替,因为引用传递省去了临时对象的构造和析构 N o}Ly{
U[S#axak
函数的类型不能省略,就算没有也要加个void 7@.UkBOx
O1nfz> L`
)32BM+f"77
七、函数体中的指针或引用常量不能被返回 %rz.>4i)(
JvHGu&Nr!
Char *func(void) y`~[R7E
@Y#{[@Hp%
{ ypuW}H%`
NA,)FmQjk
char str[]=”Hello Word”; kCRP?sj
>Fzu]G4]
//这个是不能被返回的,因为str是个指定变量,不是一般的值,函数结束后会被注销掉 !J}Bv
"[.adiw
return str; [hf#$Dl|
F:8cd^d~u
} nKFua l3
m|O7@N
函数体内的指针变量并不会随着函数的消亡而自动释放 ]JeA29
lW,rzJ1
B_k[N}|zD
八、一个内存拷贝函数的实现体 !9l
c6W
p5!=Ur&Ac
void *memcpy(void *pvTo,const void *pvFrom,size_t size) pP&TFy#G+'
A22h+8yG
{ HNA/LJl[VU
,qgph^C
assert((pvTo!=NULL)&&(pvFrom!=NULL)); +fd^$Qd%K
pZ/aZg1Ld
byte *pbTo=(byte*)pvTo; //防止地址被改变 S-"OfWg<
+_8*;k@F'
byte *pbFrom=(byte*)pvFrom; bP`.teO\
<Gy)|qpK[
while (size-- >0) "%aJ'l2
yIwAJl7Xf
pbTo++ = pbForm++; 3|Q:tt'|#
K h}Oiw
return pvTo; b7It8
,y[wS5li
} +8FlDiP
:QnN7&j|(w
?~e 8:/@
九、内存的分配方式 _|x b)_
d/8I&{.
分配方式有三种,请记住,说不定那天去面试的时候就会有人问你这问题 w.gI0`
9PA\Eo|Yb
1、 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。 F/\w4T
-hf)%o$
2、 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。 k0{5)Su"xr
*5k" v"NM(
3、 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存。 ZM/*cA!"
Y" &