一、#include “filename.h”和#include <filename.h>的区别 2;q6~Y,
v"s}7trWV
#include “filename.h”是指编译器将从当前工作目录上开始查找此文件 EswM#D9(4
[6c{t
#include <filename.h>是指编译器将从标准库目录中开始查找此文件 >si<VCO
){6;o&CC:
T$+}Srb
二、头文件的作用 kQj8;LU
H6~QSe0l
加强安全检测 alq>|,\x
I5-/KVWb
通过头文件可能方便地调用库功能,而不必关心其实现方式 C[[z3tn
q-uYfXZ{j
y(q1~73s
三、* , &修饰符的位置 ]CTu |
#-@dc
对于*和&修饰符,为了避免误解,最好将修饰符紧靠变量名 94n,13
jdhhvoQ
~#gVs*K
四、if语句 r<"1$K~Ka
DB?[h<^m
不要将布尔变量与任何值进行比较,那会很容易出错的。 &3AGj,
k6dSj>F>
整形变量必须要有类型相同的值进行比较 }+u<^7$g|
+pDuRr
浮点变量最好少比点,就算要比也要有值进行限制 XX/cJp
T,;6q!s=
指针变量要和NULL进行比较,不要和布尔型和整形比较 1tD4I
2#sE\D
]
Li(E:
五、const和#define的比较 N<?RN;M
ty(F;M(
const有数据类型,#define没有数据类型 O-G4^V8
g6nBu
个别编译器中const可以进行调试,#define不可以进行调试 k8w8I$QEM
Iy"
在类中定义常量有两种方式 y\ouIsI77
TG'A'wXxy
1、 在类在声明常量,但不赋值,在构造函数初始化表中进行赋值; ;Ni+TS
b`1P%OjC
2、 用枚举代替const常量。 03#r F@e
cA_v*`YL
lS}5bcjR=k
六、C++函数中值的传递方式 cz.-cuD[iD
@1rF9<
4g
有三种方式:值传递(Pass by value)、指针传递(Pass by pointer)、引用传递(Pass by reference) R_(A&,
PF4Cs3m/
void fun(char c) //pass by value "&7v.-Yk(
%vMi
kibI
void fun(char *str) //pass by pointer YsLEbue
#K
]k
void fun(char &str) //pass by reference IUI>/87u
3dC8MKPq0
如果输入参数是以值传递的话,最好使用引用传递代替,因为引用传递省去了临时对象的构造和析构 M)Y`u
Ib]{rmaP
函数的类型不能省略,就算没有也要加个void rjfQ\W;}U
x@Q}sW92
qc@CV:
七、函数体中的指针或引用常量不能被返回 sgFpZk
E@t^IGDr
Char *func(void) +\Rp N
MB:E/
{ M]eH
JZ~v
`y
m^0x8
char str[]=”Hello Word”; o
D^],
3_ObCsJ#,
//这个是不能被返回的,因为str是个指定变量,不是一般的值,函数结束后会被注销掉 .LdLm991,Y
kE/>Ys@w
return str; O[Nc$dc
wB"&K;t
} 4km=KOx[
c7S<ex,
函数体内的指针变量并不会随着函数的消亡而自动释放 F@&q4whaVD
OyFBM>6gh
^-mz!{
八、一个内存拷贝函数的实现体 =|=9\3po
X8F _Mb*
void *memcpy(void *pvTo,const void *pvFrom,size_t size) `[7&tOvSk
/1t(e._
{ v?5Xx{ym
qH$G_R#)8B
assert((pvTo!=NULL)&&(pvFrom!=NULL)); fq_ 6xs
q4Qm:|-
byte *pbTo=(byte*)pvTo; //防止地址被改变 )k=8.j4
[\eUCt F
byte *pbFrom=(byte*)pvFrom; "wA3l%d[Y
,Rz,[KI|
while (size-- >0) zN*/G6>A
(lT
H EiX
pbTo++ = pbForm++; ME{i-E4
\2pJ ]
return pvTo; ,??xW{*|
r(0I>|u
} Pa%XLn'5
>\[sNCkf
^o65sM
九、内存的分配方式 wE;??'O'l
^pAqe8u_
分配方式有三种,请记住,说不定那天去面试的时候就会有人问你这问题 kR9G;IZ8s
2r<UYB
1、 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。 K4snpuhC
^`Vt<DMT
2、 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。 ~1i,R1_\Y
_~fO8_vr
3、 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存。 v`bX#\It
)%f]`<