小结

一、断言assert

1. assert()  断言,断定这个表达式为真。

2. 要使用断言时,需引用头文件#include

例:int Div (int a,int b)

{

   assert (b != 0);

   return a\b;

}

b=0,程序崩溃,但assert会告诉崩溃原因

二、const

1. const     只读,不能修改

 

2.作用:限定变量的写权限,变量只读

  例:const int ca = 10

      b = ca;(正确)

      ca = 100;(不可以)

      const int cb;(不可以,没有初始化)

 

3.类型对于const而言是透明的

  例:const int cb = 20; ó int const cb = 20;

 

4.const 的直接右边的内容不能作为左值

  例:(1const int *cp1 = &a;    //指向常量的指针

          *cp1 = 200;   //error

           cp1 = &b;    //right

          const 限定的是*cp1;

 

     2int *const cp1 = &a;    //常指针

          *cp1 = 100;   //right

           cp1 = &b;    //error

          const 限定的是cp1

 

     3const int* const cp1 = &c;    //指向常量的常指针

           *cp1 = 100;  //error

            cp1 = &b;   // error

          const 限定的是int*cp1

 

5.权限可以等价传递,或者缩小传递

例:int a=10;

    const int ca = 100;  

    int *p1 = &ca;

    p1 = &a;   //error 

因为p1没有权限,如果改变p1的值,那么p1解引用后就会改变ca的值,而ca是受权限的,这样做违背了const的用法,故而程序崩溃

 

    const int *p2 = &a;

    p2 = &ca        //正确

 

int * const p3 = &a;

p3 = &ca;       //error    p3受限制,如若改成*p3则合法

int *const p4 = &ca;   //error  

若合法,*p4赋值后便可将ca的值改变,违背const的用法

 

6.左值

  放在赋值号‘=’左边的值叫左值,其他的为右值

 

三、变量的生命周期,作用域等总结

1. 代码段:存放代码

   全局(静态)变量区:存放静态变量,全局变量

   栈(堆栈)stack:存放局部变量(只用不回收)

   heap:自己存放内存,自己释放内存(动态内存,自行管理)

2.全局变量:

  1)生命周期:从程序运行时开始创建,程序结束时才销毁

  2)作用域:从定义这个变量开始,到这个文件结束

  3)默认值:0

4)存储区域:全局变量区

5)链接属性:若无静态关键字static为外部(其他文件也能看到),有static为内部(只有自己能看见)

    exterm int g_b; //g_b在其他文件有定义    exterm引用外部文件符号

    static int g_c;  //只能在内部文件使用

3.局部变量:定义在函数内部的变量,包括形参

  1)生命周期:进入函数时创建,函数退出时销毁

  2)作用域:只在本函数有效

  3)默认值:随机值       (若有static,默认值为0

  4)链接属性:无

  5)存储区域:在栈中       (若有static,则在静态变量区中)

4.静态局部变量:

  1)生命周期:第一次进入函数时创建,程序结束时才销毁

  2)作用域:只在函数中有定义

  3)默认值:0

  4)链接属性:无

  5)存储区域:静态变量区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值