一、#include “filename.h”和#include <filename.h>的区别 "V~U{(Z
RUf,)]Vvk
#include “filename.h”是指编译器将从当前工作目录上开始查找此文件 /7@@CG6b
}^G'oR1LF
#include <filename.h>是指编译器将从标准库目录中开始查找此文件 Mp75 L5
@^Mn
PM
s .^9;%@$J
二、头文件的作用 %xxe U
Bp^>R`,
加强安全检测 *Dh.'bB!
L"zOa90ig
通过头文件可能方便地调用库功能,而不必关心其实现方式 5<IUTso5h
;Iw'TF
!f)'+_d
三、* , &修饰符的位置 }n=Tw92g
.)|jBC8|}
对于*和&修饰符,为了避免误解,最好将修饰符紧靠变量名 Y8.0R-:ZAN
z-[Jbjhd
{0QD-b o
四、if语句 M(Jf&h4b
DBCL+QHA
不要将布尔变量与任何值进行比较,那会很容易出错的。 9foQ0#R
g%j z,|
整形变量必须要有类型相同的值进行比较 s`C#=l4
dp)lHBV
浮点变量最好少比点,就算要比也要有值进行限制 )~d2`1zGS
Uo^s]H#:
指针变量要和NULL进行比较,不要和布尔型和整形比较 kKE2~ q
G2a fHL<
Iay7Fkv
五、const和#define的比较 ,-] JCcH
:KX/`
const有数据类型,#define没有数据类型 XIBw&mWf
zF)_t S
个别编译器中const可以进行调试,#define不可以进行调试 m>:%[vm
q,u>`]}
在类中定义常量有两种方式 Uj k``;
Vz 5:73
1、 在类在声明常量,但不赋值,在构造函数初始化表中进行赋值; 1b6gTfU
2:p2u1Q
O
2、 用枚举代替const常量。 =AgY8cF!sl
lBQ|=
rUlpo|B
六、C++函数中值的传递方式 DX$`\PA
D:n0dfPU
有三种方式:值传递(Pass by value)、指针传递(Pass by pointer)、引用传递(Pass by reference) wO8^|Yf
OFRzz G@
void fun(char c) //pass by value k%In
xR#hU;E}
void fun(char *str) //pass by pointer 7{<F6F^P
mqsf#'ri
void fun(char &str) //pass by reference L@a-"(TN+
\SLYqJ~m
如果输入参数是以值传递的话,最好使用引用传递代替,因为引用传递省去了临时对象的构造和析构 J)jiI>
WK;p[u?~xi
函数的类型不能省略,就算没有也要加个void ~d{E>J77j
! \awT
t"0~2R6i
七、函数体中的指针或引用常量不能被返回 B|, 6m 3.
KL5rF,DME
Char *func(void) ~PlwPvWo
OPKX&)SE-
{ Iu1P}R>C
+\:I3nKs%
char str[]=”Hello Word”; N`iK1n4X
X]1ep
//这个是不能被返回的,因为str是个指定变量,不是一般的值,函数结束后会被注销掉 ;F5B)&/B
,\=u(Y\I[
return str; <5$= Ta
<NJ7mR}
} ppV\FQ{K
Ce_Z
&?
函数体内的指针变量并不会随着函数的消亡而自动释放 FswFY7
8
cz T@ txF
dk(-yv'
八、一个内存拷贝函数的实现体 v(: VUo]H
Zfb:>J@h6
void *memcpy(void *pvTo,const void *pvFrom,size_t size) (n`\ b47
#=O0-si]P
{ B;K{Vo:C
|(P>'fat-p
assert((pvTo!=NULL)&&(pvFrom!=NULL)); e#zGLxa
S0yPg9v
byte *pbTo=(byte*)pvTo; //防止地址被改变 J25>t^
(nE$};c<b2
byte *pbFrom=(byte*)pvFrom; wfZ'T#1
fA3
while (size-- >0) yS3x))
Sl$dXB@
pbTo++ = pbForm++; \C<rg|
}`_2fJ6
return pvTo; "lz!'~im
*Lh0E/5
} "(C}Dn#
e<C5}#wt
n[iil$VKh
九、内存的分配方式 5 ;|9bWH
oOUVU}H
分配方式有三种,请记住,说不定那天去面试的时候就会有人问你这问题 rg'? ?rq
5#d(_
1、 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。 Me`"@{r|#
*|=&MU*+
2、 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。 r?[mn^Bo 5
tICxAp:
3、 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存。 6u.b?_u
d3{Zhn@
R]V`t^1
十、内存分配的注意事项 7=<PVJ*/
K^w9@&