1. 程式人生 > >C中常變數 const的應用

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;

}