久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > const的作用

const的作(zuo)用 時間:2019-05-24      來源:華清(qing)遠見

在c語言中,關鍵字const修飾變(bian)量(liang)(liang)(liang),可以使得變(bian)量(liang)(liang)(liang)常(chang)量(liang)(liang)(liang)化(hua)。所謂的常(chang)量(liang)(liang)(liang)化(hua),就意味(wei)著“readonly”。

它的規則(ze):const離(li)誰(shui)近,誰(shui)就(jiu)不能被(bei)修改

下面我們一(yi)起來通過示例來看(kan)下:

一、const修飾變量

  1 #include <stdio.h>                                                       

  2  ;     &nbsp;                              

  3 int main(int argc, const char *argv[])

  4 {

  5     const int a = 10;

  6     int const b = 10;

  7 

  8     printf("a = %d,b = %d\n&quot;,a,b);                                          

  9     return 0;

 10 }

程(cheng)序運行(xing)結果如下:

yxl@ubuntu:~$ gcc test.c 

yxl@ubuntu:~$ ./a.out 

a = 10,b = 10

現在我們對變量進(jin)行下修改

  1 #include <stdio.h>

  2 

  3 int main(int argc, const char *argv[])

  4 {

  5     const int a = 10;

  6     int const b = 10;

  7 

  8     a = 20;

  9     b = 30;                                       &nbsp;                         

 10 

 ;11     printf("a = %d,b = %d\n",a,b);

 12     return 0;

 13 }

程序運行(xing)結(jie)果如(ru)下:

yxl@ubuntu:~$ gcc test.c 

test.c: In function ‘main’:

test.c:8:4: error: assignment of read-only variable ‘a’

  a = 20;

    ^

test.c:9:4: error: assignment of read-only variable ‘b’

  b = 30;

^

上面兩種(zhong)寫法都(dou)是允許的,變量a和(he)b有const修飾,則a和(he)b的值(zhi)不能被修改。

二、const修飾(shi)指(zhi)針

1.常(chang)量化(hua)指針(zhen)(zhen)目標表(biao)達式,限制通過指針(zhen)(zhen)改變其目標的數值。一般形式如下:

const  <數據類型> *<指針(zhen)變(bian)量名> [=<指針(zhen)運算表(biao)達式>] 

請看下(xia)面示例代碼:

  1 #include <stdio.h>

  2 

  3 int main(int argc, const char *argv[])

  4 {

  5     int a = 10,b = 20;

  6     const int *p;

  7 

  8     p = &a;

  9     printf(&quot;a = %d,*p = %d\n",a,*p);

 10 

 11     p = &b;                   &nbsp;        ;                                     

&nbsp;12     printf("b = %d,*p = %d\n",b,*p);

 13     return 0;

 14 }

程序(xu)運行結果如(ru)下:

yxl@ubuntu:~$ gcc test.c 

yxl@ubuntu:~$ ./a.out 

a = 10,*p = 10

b = 20,*p = 20

現在我們對(dui)指針的目標(biao)進行修改(gai):

  1 #include <stdio.h>

  2 

  3 int main(int argc, const char *argv[])

  4 {

  5     int a = 10,b = 20;

  6     const int *p;

  7 

  8     p = &a;

   9     printf("a = %d,*p = %d\n",a,*p);

 10 

 11     p = &b;

 12     printf("b = %d,*p = %d\n",b,*p);

 13 

 14     *p = 30;

 15     printf("*p = %d\n",*p);                                                 

 16 

 17     return 0;

 18 }

程序運行結(jie)果如下:

yxl@ubuntu:~$ gcc test.c 

test.c: In function ‘main’:

test.c:14:5: error: assignment of read-only location ‘*p’

  *p = 30;

     ^

通(tong)過以上測(ce)試,我們沒有辦法通(tong)過p來改變目標地(di)址的(de)(de)內容(rong),最常見的(de)(de)用法就是(shi)main函(han)數(shu)的(de)(de)參數(shu)。

2.常量化指針變量

常量(liang)(liang)化指(zhi)針變量(liang)(liang),是(shi)的指(zhi)針變量(liang)(liang)存儲的地(di)址值不(bu)能修改,一(yi)般說明(ming)形(xing)式(shi)如下:

<數據(ju)類型> * const  <指針變量名(ming)> [=<指針運算表達(da)式>;] 

請看下面示例代碼:

  1 #include <stdio.h>

  2 

  3 int main(int argc, const char *argv[])

  4 {

  5     int a = 10;                                ;                     &nbsp;       

  6     int * const p = &a;

  7 

  8     printf("a = %d,*p = %d\n",a,*p);

  9     return 0;

 10 }

程序運行結果如下:

yxl@ubuntu:~$ gcc test.c 

yxl@ubuntu:~$ ./a.out 

a = 10,*p = 10

現在我們來修(xiu)改下(xia)代碼(ma):

  1 #include <stdio.h>

  2 

  3 int main(int argc, const char *argv[])

  4 {

  5     int a = 10,b = 20;

  6     int * const p = &a;

  7     p = &b;                                                               &nbsp; 

  8 

  9     printf("a = %d,*p = %d\n",a,*p);

 10     return 0;

 11 }

程序運(yun)行結果如下:

yxl@ubuntu:~$ gcc test.c 

test.c: In function ‘main’:

test.c:7:4: error: assignment of read-only variable ‘p’

  p = &b;

^    

通過以(yi)上示例(li),我(wo)們可以(yi)看出此時指針(zhen)變量的指向是(shi)不可以(yi)修改的。

3.常量(liang)化指(zhi)針(zhen)變(bian)量(liang)及其目標(biao)表達式,一般(ban)說明形式如下:

const <數據(ju)類型> * const  <指(zhi)針變量名&gt; [=<指(zhi)針運算表達式(shi)>] 

請(qing)看下面示(shi)例代碼(ma):

  1 #include <stdio.h>

  2 

  3 int main(int argc, const char *argv[])

  4 {

  5     int a = 10;         &nbsp;                                   &nbsp;               

  6     const int * const p = &a;

  7 

   8     printf("a = %d,*p = %d\n",a,*p);

  9     return 0;

 10 }

程序運行結果如下:

yxl@ubuntu:~$ gcc test.c 

.yxl@ubuntu:~$ ./a.out 

a = 10,*p = 10

現在我(wo)們來修改下(xia)代碼:

  1 #include <stdio.h>

  2 

  3 int main(int argc, const char *argv[])

  4 {

  5     int a = 10,b = 20;

 ; 6     const int * const p = &a;

  7 

  8     p = &b;

  9     *p = 30;

 10                                 &nbsp;                                 &nbsp;         

 11   &nbsp; printf("a = %d,*p = %d\n",a,*p);

 12     return 0;

 13 }

程序運行結果如下(xia):

yxl@ubuntu:~$ gcc test.c 

test.c: In function ‘main’:

test.c:8:4: error: assignment of read-only variable &lsquo;p’

  p = &b;

    ^

test.c:9:5: error: assignment of read-only location ‘*p&rsquo;

  *p = 30;

     ^

通過以上示例(li),我們(men)可(ke)以看出,此時指針的指向和(he)目標的內容都不可(ke)以修改。

上一篇:C語言scanf函數用法

下一篇:什么是結構體

熱點文章推薦
華清學(xue)員就(jiu)業榜單(dan)
高薪學(xue)員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽(qia)談專線(xian):010-82525379 院校(xiao)合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部