一、assert断言:断定表达式的结果一定为真,如果为真什么都不做,如果为假程序崩溃;只在debug版有效。
例:assert(des!=NULL&&src!=NULL);
if(des==NULL||src==NULL)
{
return ;
}
注:1.断言顺序值得注意,断言顺序不能放后面!
2. assert只在 Debug版有效,后面的if语句是在release版起作用的。
二、const:定义常变量,不能写,只能读。
例1:
const int ca=100;
ca=200;//错,不能赋值
1. 数据类型对于const而言是透明的,即:const int与int const没区别。
2. const用于封锁直接修饰的内容,将该内容变为只读。
3. 权限只能同等传递或者缩小传递。
例2:
const int *cp1=&a;<=>int const *cp1=&a;
上式const直接修饰的是*cp1,所以cp1可以写,而*cp1只能读,不能写。
cp1=&b;//可以的
*cp1=200;//不可以
例3:
int *const cp2=&a;
cp2=&b;//不行
*cp2=200;//可以
例4:
int const *const ccp=&a;
ccp =&b;//不行
*ccp=200;//不行
上例中,ccp和*ccp都被封锁了,所以两者都不能进行写运算。
例5:
int a=10;//读,写
int b=20;//读,写
const int ca=10;//读
const int cb=20;//读
int *p=&a;//ok
p=&ca;//error,*p=50,p权限无限制,ca只能读,若可以,则通过*p就修改了 ca的值了
4. 被调用函数传指针
void Mystrcpy(char*des,const char*src)
src不能改,只能读。