一、assert
1、assert:断言,断定该结果一定成立,如果表达式为真,则忽略,否则程序崩溃,指出错误的地方
2、将版本改为release,所有的断言自动失效
3、assert与if放在一起使用
4、代码
char *Mystrcpy(char *des,char *src)
//谨记:返回的是指针型,一定要加*Mystrcpy
//参数检查,使程序具有健壮性/鲁莽性
{
char *p = des;
assert(des != NULL && src != NULL);
if(des == NULL || src == NULL)
return NULL;
while(*des++ = *src++);
return p;
//参数检查,使程序具有健壮性/鲁莽性
{
//返回拷贝后的首地址,返回值的作用:记录des的首地址,不然des++使des的地址发生变化
}
}
二、const:定义常变量,变量变成只读(不能做左值)
1、数据类型对于const透明,const int == int const
代码
int main()
{
}
2、const直接修饰的内容不能做左值
代码
int main()
{
}
3、权利的传递(权利可同等传递,可缩小,但不可放大)
代码
int main()
{
int a = 10;
int b = 10;
const int ca = 100;
int *p = &a;
p =& ca;
//error
因为*p会将ca的值修改,所以错误
如*p = 200;//error
const int *cp1 = &a;
cp1 =& ca;//ok
cp1可修改成&ca,因为cp1不允许解引用,所以改变不了ca的值
*cp1 = 200;//error
int *const cp2 = &a;
//ok
int *const cp3 = &ca; //error
由const int ca = 100;而*cp3会修改ca的值,所以错误
return 0;
}
{
}
三、一些小知识
1、return:退出这个函数
exit:退出整个程序(太暴利)