一、#include “filename.h”和#include <filename.h>的区别 %m`QnRX?D
R~([
#include “filename.h”是指编译器将从当前工作目录上开始查找此文件 G}*B`m
:4d7%q
#include <filename.h>是指编译器将从标准库目录中开始查找此文件 6;DPGx
@TDcj~oR?
FT=>haN
二、头文件的作用 ?i"FdpW
/;1FZ<zU
加强安全检测 I&c#U+-A'
on$a]zx'@
通过头文件可能方便地调用库功能,而不必关心其实现方式 nm.d.A/]Z
%{"STbO #>
}vIm C [
三、* , &修饰符的位置 .}wir,
!NtY4O/
对于*和&修饰符,为了避免误解,最好将修饰符紧靠变量名 xOlkG*3c
g11K?3*%Q
g(^l>niF:
四、if语句 )2S\:&x
DQ$/0bq
不要将布尔变量与任何值进行比较,那会很容易出错的。 :h@:F7N _
,8seoX^
整形变量必须要有类型相同的值进行比较 ai RNd~\
~r3g~MCHS
浮点变量最好少比点,就算要比也要有值进行限制 mLO6`]p{H
)ej8vm
指针变量要和NULL进行比较,不要和布尔型和整形比较 `1gsrHi4N
lVHJ}(<'p
WP9=@X Z
五、const和#define的比较 :C5N(x
o-_a0j
const有数据类型,#define没有数据类型 -u{:39y{n
Z)~2{)
个别编译器中const可以进行调试,#define不可以进行调试 _JS'~JO3{
&V$R@~x
在类中定义常量有两种方式 $}@ll^
Yc}b&
1、 在类在声明常量,但不赋值,在构造函数初始化表中进行赋值; \T?O.
9 )qx0
2、 用枚举代替const常量。 V'B 6C#jT
e9hQJ
1{)x
s#ykD{Z
六、C++函数中值的传递方式 v)06`G
/VQ<}S[k}-
有三种方式:值传递(Pass by value)、指针传递(Pass by pointer)、引用传递(Pass by reference) x,+zw9
hT[O5
void fun(char c) //pass by value vEkz5$
rcOmpgew
void fun(char *str) //pass by pointer :Pv{E
jsj" W&J
void fun(char &str) //pass by reference OB%y'mo7]
fi1UUJ0
U;
如果输入参数是以值传递的话,最好使用引用传递代替,因为引用传递省去了临时对象的构造和析构 -c
tZ9+LL
be_t;p`3
函数的类型不能省略,就算没有也要加个void 6*E7}
e M}Xn^}
_F9
c.BH
七、函数体中的指针或引用常量不能被返回 ;%}
,aeFEsi
Char *func(void) q!n|Ju<
4{V=X3,x
{ PuWF:'w r
j,Y=GjfGM
char str[]=”Hello Word”; @4pN4v8U
chy7hPxC;
//这个是不能被返回的,因为str是个指定变量,不是一般的值,函数结束后会被注销掉 )u$A!+fo
btOC\bUMfD
return str; N^)OlH
YeQX13C"Z
} &^Io\
H5n"!!
函数体内的指针变量并不会随着函数的消亡而自动释放 Q["}U7j
pVr,WTr6E
f`Nu]#i
八、一个内存拷贝函数的实现体 {,m!%FDL
L_(|5#IDw
void *memcpy(void *pvTo,const void *pvFrom,size_t size) J<2N~$
]du pU"VV
{ E?V:dr
^>>Naid
assert((pvTo!=NULL)&&(pvFrom!=NULL)); ?Gb
18m
<H.Ml>q:r
byte *pbTo=(byte*)pvTo; //防止地址被改变 Z1&8U=pax
s<myZ T$
byte *pbFrom=(byte*)pvFrom; M:A7=rO~
8p5u1 ;2
while (size-- >0) g)zy^aDf
I$YF55uB
pbTo++ = pbForm++; rei<{woX
,,?t>|3
return pvTo; a}yJ$6xi
'uh6?2)wG
} %!@Dop/<
1.+MX(w
/)|*Vzu
九、内存的分配方式 SpkD
\ZA%"F){
分配方式有三种,请记住,说不定那天去面试的时候就会有人问你这问题 !!9V0[
{2,V3*NF
1、 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。 LWY`J0/
MSA*XDnN
2、 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。 M/BBNT
O!a5
3、 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存。 bz@4obRqf
?O.&=im_
-" DI,o
十、内存分配的注意事项 #JVcl $0Y
j0Q;OKu
用new或malloc分配内存时,必须要对此指针赋初值。 yd2ouCUV
8g<3J-7Mm
用delete 或free释放内存后,必须要将指针指向NULL ^ H'|iju
$Uzc
不能修改指向常量的指针数据 e|`&K"fnq
Lm8cY
)ZT&V