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

Hi,歡迎來到嵌入式培訓高端品牌 - 華清遠見教育科技集團<北京總部官網>,專注嵌入式工程師培養15年!
當前位置: > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > C語言聲明學習之初級篇
C語言聲明學習之初級篇
時間:2016-12-29作者:華清(qing)遠見

C語言為我們定義了四種基本數據類型:整型,浮點型,指針以及聚合類型(數組和結構體等),在此基礎上,我們就可以聲明變量。我們平時經常說定義一個某種類型的變量,其實這樣說不確切,應該說是聲明變量。
變量聲明的(de)基本形(xing)式(shi)是:

說明符(一個或多個) 聲明表達式列表

比如說:int a, b, c, d;

C語言中對指針的聲明比較有代表性(xing),我們(men)來看一下:

比(bi)如聲明一個指向int型的(de)指針a:int *a;

這個語句表示表達式*a產生的結果類型是int,而我們又知道*操作符執行的是間接訪問操作,所以可以推斷a肯定是一個指向int的指針。
C語言在本質上是一種自由形式的語言,它給了程序員很大的空間,我們同樣可以這樣寫:int* a,這個聲明與int *a時一個意思,而且似乎更為清楚,a被聲明為類型為int*的指針(實則不然),這會誘導我們這樣聲明三個指向int型的指針: 
        int* a, b, c; 
       也許你會很自然的以為這條語句把三個變量a、b、c都聲明為指向整型的指針,但是事實上我們被它的形式愚弄了,星號實際上是表達式*a的一部分,只對這個標識符有用,a是一個指針,但是b和c都只是普通的整型而已,要聲明三指針,這樣寫是可以的: 
        int *a, *b, *c;  
        從這(zhe)個簡單的例(li)子我們可以看出C語言(yan)的聲明(ming)規則(ze)多么具有(you)迷惑性(xing),呵呵,這(zhe)也是(shi)C語言(yan)飽(bao)受(shou)批評的地方之一,但(dan)這(zhe)決定與語言(yan)本身的設計哲學(xue),我們無法改變,要想(xiang)用好C語言(yan),我們必須掌握(wo)它的語法規則(ze)。

我們再看一個例子: 
        int fun(); 
        我們都知道它把f聲明為一個函數,它的返回值是一個整數。
如果這樣寫: 
        int *fun(); 
 &nbsp;      要想推斷出它(ta)的(de)含義,我們(men)必(bi)須知道(dao)*fun()是(shi)(shi)如何求(qiu)值的(de)。首(shou)先執(zhi)行的(de)是(shi)(shi)函(han)數調用操作(zuo)符(),因為它(ta)的(de)優先級高于間接(jie)訪(fang)問操作(zuo)符*,所以fun是(shi)(shi)一(yi)個函(han)數,它(ta)的(de)返回值類型(xing)是(shi)(shi)一(yi)個指向(xiang)整型(xing)的(de)指針。

再看一個更為有趣的聲明: 
        int (*fun)(); 
        這個(ge)聲明(ming)有兩對括(kuo)號(hao),每(mei)對括(kuo)號(hao)的(de)(de)含(han)義不同。第二(er)對括(kuo)號(hao)是函(han)數調用操作(zuo)符,但是第一(yi)對只起到聚組(zu)的(de)(de)作(zuo)用。它導致間接訪問在函(han)數調用之前進(jin)行,使fun是一(yi)個(ge)函(han)數指針,它所指向的(de)(de)函(han)數返回一(yi)個(ge)整型值。

那么現在這個聲明應該很容易分析出來了 
        int *(*fun)(); 
        fun還是一(yi)個(ge)函數指(zhi)針,只是所指(zhi)向(xiang)的(de)函數返回的(de)是一(yi)個(ge)整型指(zhi)針。

先寫到這里(li),對(dui)C語言(yan)的聲明之旅(lv)才剛剛開始,下回(hui)我們將(jiang)在中級(ji)篇里(li)討論(lun)更有(you)趣(qu)的話題!

發表評論
評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)