娓娓道來c指標 (4)解析c的聲明語句

來源:互聯網
上載者:User

標籤:c語言   c聲明   指標   數組指標   指標數組   

                         (4)解析c的聲明語句

在繼續探索c指標之前,有必要來解析下c語言中複雜的聲明文法。

只需要記住兩點:一個原則,一個規則。

原則:先看標示符。

規則:運算子優先順序是規則。


舉例說明

1.最簡單的 int array[3];

結論:array是數組,數組規模是3,元素類型是int。

解析過程:先看標示符:array,只有一個運算子[],那麼array就是數組,元素類型是int,完了。


2.難一點的

(1)數組指標 int(*array)[3];

結論:array是一指標,指向一數組,數組規模是3,數組中元素類型int。

解析過程:先看標示符:array,由於使用了括弧運算子,只能先解析(*array):說明array是一指標。解析完了的,就可拋棄,那麼只剩下[],說明指向的是一數組,剩下的不解釋了。

(2)指標數組 int *array[3];

結論:array是一數組,數組規模是3,數組中元素類型是int*。

解析過程:先看標示符:array,由於[]優先順序高於*,故array先與[]結合:說明array是一數組。只剩下一個*,說明數組中存放的是指標,指標指向的類型是int,也就是說數組中存放的元素類型是int*。

看來只差一個(),意義完全不同。

數組指標和指標數組的記憶體:



3.再複雜一點的

函數指標 int (*pfun)(int,int);

結論:pfun是一函數指標,即pfun指向一個函數,該函數有兩個參數,參數類型是int、int,並且函數的返回值的類型是int。

解析過程:先看標示符:pfun,由於使用了括弧運算子,只能先解析(*pfun):說明pfun是一指標。現只剩下(int,int),進一步說明pfun指向的是一函數,該函數有兩參數,類型都是int,最後的int,說明函數的返回值類型是int。


4.更加複雜一點

int *(*pfun[3])(int, void (*)(int, int*));

是否有眼花繚亂的感覺,運用上面的方法,你會解析出來的。不妨寫在評論中,比較看看。


專欄目錄:C指標


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.