一、#include “filename.h”和#include <filename.h>的区别 w-~u[c
I'"b3]DXG
#include “filename.h”是指编译器将从当前工作目录上开始查找此文件 p7.j>w1F
pz'l9Gp;@
#include <filename.h>是指编译器将从标准库目录中开始查找此文件 \etuIFQ#U
%onUCN<O`
g? 7%
二、头文件的作用 7MX nt5qUh
/SLAg&
加强安全检测 ?Bg<74
"S$4pj`<
通过头文件可能方便地调用库功能,而不必关心其实现方式 x,kZ>^]&b
[X >sG)0S~
] r8
hMv
三、* , &修饰符的位置 " oWiQ{\IP
<28L\pdG`
对于*和&修饰符,为了避免误解,最好将修饰符紧靠变量名 }%j@%Ep[
k_A. aYe
1UR;}
四、if语句 eUiJl6^x
)ZkQWiP-
不要将布尔变量与任何值进行比较,那会很容易出错的。 ["'0vQ
Q~/TqG
U
整形变量必须要有类型相同的值进行比较 P\"|b\O1
Kv**(~FNnH
浮点变量最好少比点,就算要比也要有值进行限制 ujF*'*@\
l=jfgsjc
指针变量要和NULL进行比较,不要和布尔型和整形比较 &?.k-:iN
E_VLI'Hn?
4JlB\8rc
五、const和#define的比较 l.tNq$3pS
yHvF"4]
const有数据类型,#define没有数据类型 6>I{Ik@>
7_ $Xt)Y{
个别编译器中const可以进行调试,#define不可以进行调试 H^Th]-Zl
n}8J-/(|+
在类中定义常量有两种方式 m@K5eh
~=W|I:@
1、 在类在声明常量,但不赋值,在构造函数初始化表中进行赋值; ym,UJs&
zP\n<L5
2、 用枚举代替const常量。 idL6 *%M
G]q1_q4P1?
<OG rC .k}
六、C++函数中值的传递方式 76i)m!
'B;aXy/JC
有三种方式:值传递(Pass by value)、指针传递(Pass by pointer)、引用传递(Pass by reference) 3q*y~5&I
j(j o8
void fun(char c) //pass by value ;F)gr
'jv[Gcss3L
void fun(char *str) //pass by pointer eT??F
n-q
void fun(char &str) //pass by reference ?y( D_Nt L
E\U6n ""]
如果输入参数是以值传递的话,最好使用引用传递代替,因为引用传递省去了临时对象的构造和析构 v?Q|;<
} $:uN
函数的类型不能省略,就算没有也要加个void OLAwRha
2t h\%
rDNz<{evj
七、函数体中的指针或引用常量不能被返回 A?{ X5`y
zo*YPDEm"
Char *func(void) %vPs38Fks
y#\jc4F_a
{ $Iuf(J-5[
F<8Rr#Z
char str[]=”Hello Word”; Ax[!7~s
1i;-mYGaMn
//这个是不能被返回的,因为str是个指定变量,不是一般的值,函数结束后会被注销掉 %j],6wW5J
L%,tc~)A
return str; ;k6>*wFl|!
B~HA 32
} oXA3i
4@6!E^
函数体内的指针变量并不会随着函数的消亡而自动释放 }kg?A oo
2#z 6= M~A
: `D[0
八、一个内存拷贝函数的实现体 l#P)9$%
!;'.mMO&%
void *memcpy(void *pvTo,const void *pvFrom,size_t size) J)O1)fR
3eUTV<!
{ _D9`L&X}
^4@~\#$z
assert((pvTo!=NULL)&&(pvFrom!=NULL)); vywd&7gK
7.4Q
byte *pbTo=(byte*)pvTo; //防止地址被改变 \VL[,z=q.
i~\fpay
byte *pbFrom=(byte*)pvFrom; -uZ bVd
J[9yQ
while (size-- >0) D[. ; H)V
Tjo
K]]
pbTo++ = pbForm++; "kC uCc
[jl'5l d
return pvTo; Uf^zA/33
Kg0Vbzvb
} C2GF
N1i
I8r5u=PH
X#9}|rT56
九、内存的分配方式 b-e3i;T!}~
7Mxw0J
分配方式有三种,请记住,说不定那天去面试的时候就会有人问你这问题 _RG!lmJV
eto3dJ!R
1、 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。 9g3J{pKcZ
YDBQ6X
2、 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。 /60`"xH
X+;F5b9z
3、 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存。 xEBiBskd
V$u~}]z
~2xC.DF_N
十、内存分配的注意事项 Pf
s _s6
{~DYf*RZ
用new或malloc分配内存时,必须要对此指针赋初值。 %1ofu,%
h4CDZ
用delete 或free释放内存后,必须要将指针指向NULL }>vf(9sF`
wD>tR
SW
不能修改指向常量的指针数据 ,<$6-3sC-
;2"#X2B
l1^/Q~u
十一、内容复制与比较 t59"[kQ
j.MpQ^eJ7
//数组…… 8%s^>.rG
t ZUZNKODW
char a[]=”Hello Word!”; B<