const 與define 建立符號常量的 用法與區別

        1、define 的用法:數組

            在c語言中我常常會看到 :#define  PI  12 ,這是建立了一個符號常量,這裏面要注意沒有那個等於號「=」;spa

       2、const 的用法:指針

         一、const 也能夠來建立符號常量,可是const 的用法比define 在用法方面更加靈活,它能夠建立const數組、const 指針、指向const 的指針,總結

               const  int RATE = 100; 這裏能夠看出一個區別,在const 建立的符號常量賦值時有一個「=」,這個不要被忽列掉,否則會出錯的;這裏舉幾個例子:數據

                                const 數組:const  int days[10]={1,2,3,4,5,6,7,,8,9,10};注意:以後在使用這個數組時,不能修改數組元素的值,例如:days[9]=1000;這將會產生一個錯誤。
語言

                                 const 指針:double rate[2]={1,2};     co

                                                      const  double *pd=rate(建立了一個指向了const的指針pd);             *pd=44(這將產生一個錯誤),而rate[0]=22(這個是容許的,由於rate未被const限定)
background

                                                      因此說,指向const 的指針不能用來修改值,可是咱們可讓pd指向別處(pd++),也就是指向了rate[1],這個是被容許的;錯誤

         二、在const 建立的指針賦值時要注意幾點:const

                      int  rate[4]={1,2,3,4};

                       const int  tu[4]={5,6,7,8};

                       const int * pc=rate;(這個賦值有效),      pc=tu (有效)  pc=&rate[2](有效)

                       int  * pcc=rate;(有效) ,pcc=tu(這個賦值無效),pcc=&rate[2];(有效);

                      因此說,把const 數據或非const 數據的地址初始化爲指向const 的指針或爲其賦值是合法的,不能把const數據地址賦給普通指針;

          三、const 的其它用法:

                聲明一個不能指向別處的指針,注意const 的位置就能夠了:   

                            double rate[4]={1.2,1.3,1.4,1.5}

                            double *const pc =rare;

                            pc=&rate[3](這個是不被容許的)

                           *pc=22.44(這個修改值是被容許的,可是隻能修改第一個值,也就是初始化那個地址上的值)

               建立指針的時候,可使用兩次const,該指針既不能修改它指向的地址,也不能修改指向地址上的值:

                                              double rate[4]={2.3,5.6,7.8,8.9}

                                              const double * const pc =rate;

                                               pc=&rate[2](這個不容許指向別處)

                                               *pc=86.3(這個也不被容許修改數組中的值)

                            

 

              說了這麼多,總結一下:

                  在運用const 的時候,關鍵是注意它在那個位置上,在不一樣位置上有不一樣的用法,並且在賦值時,類型要對頭,不能把const 的數據賦值給非cosnt 數據,可是可讓非const 數據賦值給const數據。

相關文章
相關標籤/搜索