C中常变量 const的应用

const int a=3

      表示a被定义为一个整型变量,指定其值为3,而且在变量存在期间其值不能改变。

     常变量与常量的异同是:常变量具有变量的基本属性:有类型,站存储单元,只是不允许改变其值。可以说,常变量是有名字的不变量。有名字便于在程序中被引用。

const:

int a=10;//a 可读可写

int b;

b=a;// a 的读权限

a=20;//a 的写权限,左值,放在赋值符号的左边

(1)定义常变量,将变量变成只读。

(2)数据类型对于const来说是透明的。

const int ca=10;

ca=10;//报错

 int  const cb=10;

cb=10;//报错

以上两种情况是因为const把数据类型视为透明,因此将ca,cb变成只读。

(3)const 与指针,const修饰它的直接右边。

const 与指针的位置

【1】数据类型【2】*【3】变量名

int a=10;int b=20;

const int*p1=&a;

p1=&b;//可以,因为const修饰的是它的直接右边,即*

*p1=200//不可以

int const *p2=&a;

p2=&b;//可以

*p2=&b;//不可以

int*const p3=&a;

p3=&b//不可以

*p3=&b;//可以

const int*const p4=&a;

*p4=&b;//不可以

p4=&b;//不可以

(4)权限可以同等或者缩小传递,但不能扩大传递

inta=10;int b=20;

const int ca=10;

const int cb=20'

int *p=&a; p=&b;

p=&ca//错误,*p=100可以,因此p= &ca 的值会被间接修改,因此不行。

const int *p1=&a;

p1=&ca;//可以,因为*p=100不可以,因此p1=& ca 的值不会被改变因此可以。

int *const p3=&ca;//不可以

认识断言

aessert  :断言,表达一定为真,为假时程序崩溃,有断言时,会报告崩溃情况和位置。

if 于断言往往同时出现。

两者位置不能互换,assert在前,if在后。

例:#include <stdio.h>

      #include  <aessert.h>-------》reslease版本,代码正确不用时,自己消失掉。

  int    Div(inta,int b)  

 {

        return a/b;

}

int main ( )

{

       aessert(b!=0);

       if(b==0)

{  

       return 0;  

}

       printf("%d\n",Div(10,20));

       return 0;

}

 

猜你喜欢

转载自blog.csdn.net/FoXiShaoNv/article/details/79936209