一、#include “filename.h”和#include <filename.h>的区别 yaG= j
_U{zMVr
#include “filename.h”是指编译器将从当前工作目录上开始查找此文件 W
D
T]!
z I+\Oll#Q
#include <filename.h>是指编译器将从标准库目录中开始查找此文件 H ,+?
t
xdf82)
NzU,va N
二、头文件的作用 c)A{p
P>sFV
加强安全检测 +T=(6dr
dn}` i
通过头文件可能方便地调用库功能,而不必关心其实现方式 z]2]XTmWs
?p(/_@
5v?;PX
三、* , &修饰符的位置 ;x:rZV/
;=<-5;rI
对于*和&修饰符,为了避免误解,最好将修饰符紧靠变量名 [8Qro8
TQ{Han!
3,]gEE3
四、if语句 RjWqGr;bO
Wm);C~Le
不要将布尔变量与任何值进行比较,那会很容易出错的。 $KLD2BAL
mwY
IJy[
整形变量必须要有类型相同的值进行比较 J?Dq>%+^
#
eCjn
浮点变量最好少比点,就算要比也要有值进行限制 ,RgB$TcE
:^Fh!br==
指针变量要和NULL进行比较,不要和布尔型和整形比较 UK1_0tp]x
/DqLrA
4#5:~M }
五、const和#define的比较 x7vctjM|
u`olW%C/T
const有数据类型,#define没有数据类型 WdZ:K,
m}8[#:
个别编译器中const可以进行调试,#define不可以进行调试 {X*^s5{;H
;b`[&g
在类中定义常量有两种方式 j6
jMbC Y07v
1、 在类在声明常量,但不赋值,在构造函数初始化表中进行赋值; o$[z],RO
Pl<;[cB
2、 用枚举代替const常量。 u{FDdR9<
E[O<S B
I
zCOgBT~p
六、C++函数中值的传递方式 X^\>:<
t9Y=m6
有三种方式:值传递(Pass by value)、指针传递(Pass by pointer)、引用传递(Pass by reference) P%#*-zCCx
Vpr/
void fun(char c) //pass by value KAsS[
*1 G>YH
void fun(char *str) //pass by pointer GEEW?8
uA$<\fnz
void fun(char &str) //pass by reference m85WA
#
`
`u.t[
如果输入参数是以值传递的话,最好使用引用传递代替,因为引用传递省去了临时对象的构造和析构 =)E,8L
f8SL3+v
函数的类型不能省略,就算没有也要加个void Dk+&X-]6x5
f+|$&p%
quvanxV-L
七、函数体中的指针或引用常量不能被返回 8E8N6
!q-f9E4`
Char *func(void) &AlJ "N|
?7M.o
{ 0<8XI>.3D
UjOB98Du
char str[]=”Hello Word”; R-Z~V
e#,~,W.H
//这个是不能被返回的,因为str是个指定变量,不是一般的值,函数结束后会被注销掉 TLd `1Ac
[kqYfY?K
return str; C-8qj>
?-tVSRKQ
} 4*aZ>R2hO
e5.h ?
函数体内的指针变量并不会随着函数的消亡而自动释放 _DrJVC~6@
=l.+,|ZH!
etd&..]J
八、一个内存拷贝函数的实现体 *26334B.R
rJa$9B*^
void *memcpy(void *pvTo,const void *pvFrom,size_t size) "+zCS|
sP-^~ pp
{ 9}c8Xt^&