assert、const

一、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()
{
        const int ca = 100;    //ca不能做左值
          ca = 100;    //error
            b = ca          //ok
            if(ca < b)          //ok
        const int cb;        //error      cb变量,需要给cb设置初始值
                cb = 100;      //error
  int const cb = 100;
        cb = 200;      //error;
      b = cb;          //ok
}
2、const直接修饰的内容不能做左值
代码
int main()
{
      int a = 10;
        int      20;
        const int ca = 100;
      int *p = &a;
            *p = 100;
            p = &b;
        const  int *cp1 =&a;                                                    //const修饰*cp1(int是透明的)
          *p1 = 100;                //error
          int  const  *cp1 = &a;
        cp1 =& b;                //ok
        int *const  cp3 = &a;
        *cp3 = 100;      //ok
    cp3 =& a;        //error
    int const *const cp4 =& a;  //无意义
                *cp = 100;//error
    cp4 = &b;//error
}
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:退出整个程序(太暴利)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@所谓伊人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值