一、#include “filename.h”和#include <filename.h>的区别 :1@jl2,
Z,M2vRj"qT
#include “filename.h”是指编译器将从当前工作目录上开始查找此文件 1Y~'U
=9
8|5+\1!#/)
#include <filename.h>是指编译器将从标准库目录中开始查找此文件 6Lg#co}9
3 +`,'Q9
0V`~z-#
二、头文件的作用 ZjrBOb
ej=}OH4
加强安全检测 IH5^M74b
0~W6IGE~
通过头文件可能方便地调用库功能,而不必关心其实现方式 UDnCHGq
,\d03wha
eW}-UeT
三、* , &修饰符的位置 uX&h~qE/
lZ <D,&
对于*和&修饰符,为了避免误解,最好将修饰符紧靠变量名 pigu]mj
SxcE@WM
wub7w#
四、if语句 Be<bBKQb
`49!di[
不要将布尔变量与任何值进行比较,那会很容易出错的。 3Ljj|5.q
^BW8zu@=O
整形变量必须要有类型相同的值进行比较 ZU2D.Kf_:
wnQi5P+
浮点变量最好少比点,就算要比也要有值进行限制 >enP~uW[#
,_=LV
指针变量要和NULL进行比较,不要和布尔型和整形比较 ?`6Mfpvj96
&>K|F >7q
4\uq$.f-
五、const和#define的比较 e:_[0#
mmCGIX
const有数据类型,#define没有数据类型 n0%S: (
o? K>ji!
个别编译器中const可以进行调试,#define不可以进行调试 ]"j%:fr
w6^TwjjZ$
在类中定义常量有两种方式 (Fq]y5
oU*e=uehj
1、 在类在声明常量,但不赋值,在构造函数初始化表中进行赋值; (#>Q#Izr
,jD-fL/:
2、 用枚举代替const常量。 .f!:@fX>=
47A[-&y*X
j)juvat
六、C++函数中值的传递方式 fWF!% |L
s!Iinc^p
有三种方式:值传递(Pass by value)、指针传递(Pass by pointer)、引用传递(Pass by reference) (/t{z=
vy>(?[
void fun(char c) //pass by value h96<9L
Qkw_9
void fun(char *str) //pass by pointer y
S<&d#:"
q 1u_r
void fun(char &str) //pass by reference IA}.{zY~|
Kf)$/W4
如果输入参数是以值传递的话,最好使用引用传递代替,因为引用传递省去了临时对象的构造和析构 3Gw*K-.
u~mpZ"9$ 3
函数的类型不能省略,就算没有也要加个void %O7?:#_
?}u][akM
'gsO}xj
七、函数体中的指针或引用常量不能被返回 {e0aH `me
Wv,?xm
Char *func(void) 'kg~#cf/+
U2\k7I
{ x_/H
2_Cp}Pj
char str[]=”Hello Word”; Lg2PP#r
y\dx \
//这个是不能被返回的,因为str是个指定变量,不是一般的值,函数结束后会被注销掉 &hZ6CV{
zhyf}Ta'
return str; 2j1HN
~i>'3j0@k
} |]-~yYqP3
eQqCRXx
函数体内的指针变量并不会随着函数的消亡而自动释放 |t#s h
vH E:TQo4
uD ;T
八、一个内存拷贝函数的实现体 eq9qE^[Z&
ZOx;]D"s
void *memcpy(void *pvTo,const void *pvFrom,size_t size) UM0#S}
5D3&6DCH
{ M[_Ptqjb
-:b<~S[
assert((pvTo!=NULL)&&(pvFrom!=NULL)); 2t=&h|6EW
?4R q +
byte *pbTo=(byte*)pvTo; //防止地址被改变 LVL#qNIu
:
>$v@d
byte *pbFrom=(byte*)pvFrom; (?.h<v1}
EvA8<o
while (size-- >0) " ;\EU4R
PX?^v8wlqL
pbTo++ = pbForm++; ]a:T]x6'
a^VI)
return pvTo; v)*eLX$
Y$qjQ 1jF+
} !8RJHMX&
=~dsIG
e
>7Ka\
九、内存的分配方式 G2:.8ok
V@1,((,l
分配方式有三种,请记住,说不定那天去面试的时候就会有人问你这问题 c5[~2e
gDH|I;!
1、 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。 E
<r;J
ZMK1V)ohn
2、 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。 kkj_k:Eah
$u)#-X;x
3、 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存。 e)F_zX
KT<N
;[;
ItAC=/(d
十、内存分配的注意事项 Xxm7s S
V:AA{<
用new或malloc分配内存时,必须要对此指针赋初值。 a3He-76
Q"oJhxS
用delete 或free释放内存后,必须要将指针指向NULL }MM:q R
KkR.p,/
不能修改指向常量的指针数据 Lk-h AN{[
}F3}"Ik'L
9HlM0qE5b
十一、内容复制与比较 M IU B]
4@M}5WJ7
//数组…… B{V(g"dM
Nk9w;
z&
char a[]=”Hello Word!”; aZta%3`)
.O{_^~w_q
char b[10]; @DAaCF8
dmMrZ1u2
strcpy(b,a); ~BXy)IB6
?.nD!S@
if (strcmp(a,b)==0) @,pn/[
H\|H]: CE
{} fs#9*<]m
U8zs=tA
//指针…… }<