一、#include “filename.h”和#include <filename.h>的区别 wDs#1`uTq
QYWl`Yqf
#include “filename.h”是指编译器将从当前工作目录上开始查找此文件 ;e~K<vMm;y
o#IWH;ck.
#include <filename.h>是指编译器将从标准库目录中开始查找此文件 vw` '9~
3iiOxg?j
hflDVGBW
二、头文件的作用 +7K]5p;!~
l_x>.' a
加强安全检测 h#8{fr)6
hy:K) _
通过头文件可能方便地调用库功能,而不必关心其实现方式 bre6SP@
:Czvwp{z
VE/~tT;
三、* , &修饰符的位置 6.4,Qae9E
)sapUnqrlR
对于*和&修饰符,为了避免误解,最好将修饰符紧靠变量名 s_,&"->
<zu)=W'R]
,-BZsZ0~
四、if语句 yAc}4*;T/
A3 zNUad;
不要将布尔变量与任何值进行比较,那会很容易出错的。 /zV0kW>N
Rh7=,=u
整形变量必须要有类型相同的值进行比较 taOsC!Bp
,I[A~
浮点变量最好少比点,就算要比也要有值进行限制 8\Eq(o}7
7M9s}b%?
指针变量要和NULL进行比较,不要和布尔型和整形比较 3*b!]^d:D
&S#bLE
~K|o@LK
五、const和#define的比较 %P]-wBJw
UmQ'=@^kR
const有数据类型,#define没有数据类型 ZP%Bu2xd
NO)vk+
个别编译器中const可以进行调试,#define不可以进行调试 fGLOXbsA
.{]=v
在类中定义常量有两种方式 R7By=Y!t
F~O!J@4]
1、 在类在声明常量,但不赋值,在构造函数初始化表中进行赋值; bRAf!<3
NPR{g!tK%
2、 用枚举代替const常量。 !!t@H\
]cI(||x
]%%cc
六、C++函数中值的传递方式 [ \Aor[(
Z8Clm:S
有三种方式:值传递(Pass by value)、指针传递(Pass by pointer)、引用传递(Pass by reference) AwL;-|X
3!B3C(g
void fun(char c) //pass by value HjN )~<j
6_a.`ehtj<
void fun(char *str) //pass by pointer 5(OF~mX#
~
.Eln+N
void fun(char &str) //pass by reference |m7`:~ow
:hxZ2O?5_
如果输入参数是以值传递的话,最好使用引用传递代替,因为引用传递省去了临时对象的构造和析构 @)8C
h-h}NCP
函数的类型不能省略,就算没有也要加个void Jh:-<xy)
3'2}F%!Mv
1')/ BM2
七、函数体中的指针或引用常量不能被返回 s/'gl
& ~[%N
O
Char *func(void) Wkv**X}
Afa{f}st
{ J XnPKAN
O^gq\X4}
char str[]=”Hello Word”; PZl(S}VY
=U".L
//这个是不能被返回的,因为str是个指定变量,不是一般的值,函数结束后会被注销掉 ]QU52R@M
Onoi6^G
return str; ^q$vyY
K+mtuB]yr
} jW",'1h<n
Ic&t_B*i}]
函数体内的指针变量并不会随着函数的消亡而自动释放 `ionMTZY
?-'Q-\j
tg5jS]O
八、一个内存拷贝函数的实现体 \>/:@4oK
V2]S{!p}k
void *memcpy(void *pvTo,const void *pvFrom,size_t size) "WYcw\@U
5tl}rmI`
{ Fk(0q/b
a^5`fA/L,
assert((pvTo!=NULL)&&(pvFrom!=NULL)); E(U}$Zey
ddHIP`wb
byte *pbTo=(byte*)pvTo; //防止地址被改变 qkUr5^1
^! ZjK-$A<
byte *pbFrom=(byte*)pvFrom; I}v'n{5(
)3B5"b,
while (size-- >0) rb\Ohv\
?3z+|;t6C
pbTo++ = pbForm++; 3]Lk}0atpL
TzL40="F
return pvTo; W@$p'IBwm
(\/HGxv
} v|,H d
v
V^ GIWK
q%:Jmi>
九、内存的分配方式 pmW=l/6+V3
Ft.BfgJ$
分配方式有三种,请记住,说不定那天去面试的时候就会有人问你这问题 mQs'2Y6Oa
JcVq%~{M
1、 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。 HIa$0g0J
Em"X5>;4
2、 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。 MthThsr7
47K5[R
3、 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存。 4l`gAE$
\]OD pi
2
#!D5DK@+
十、内存分配的注意事项 <7]
z'
nG%j4r ;
用new或malloc分配内存时,必须要对此指针赋初值。 VD#^Xy4% r
!d0@^JbM"
用delete 或free释放内存后,必须要将指针指向NULL l*m|b""].u
ToJru
不能修改指向常量的指针数据 VD3[ko
T&23Pf 1
$^0YK|F
十一、内容复制与比较 Csc2 yI%3
1aT$07G0
//数组…… d|NNIf
d<3"$%C
char a[]=”Hello Word!”; z"O-d<U5
e #OU {2X
char b[10]; [1UqMkXtf
Nb9pdkf0
strcpy(b,a); x+TNF>%'D
!aEp88u
if (strcmp(a,b)==0) V7@xr
M
+{w&ksk
{} SA7,]&Zb