日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言学习笔记(16)

發布時間:2025/3/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言学习笔记(16) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在C語言中,經常會出現一些復雜的類型聲明。而大多數都是涉及到指針的類型。

那么就在這一節來集中認識一下。

首先,我們先來了解*,()和[]的組合。在看實際例子前,先來看一個重要的規則:

在做選擇時,始終使[]和()的優先級大于*。舉個簡單的例子:

int *arr[10]。由于[]的優先級大于*。也就代表,首先這是一個含有10個元素數組,那么數組內的內容是什么呢?是int *arr。去掉類型名稱,數組內的類型是int *。所以這是一個含有10個整數類型指針的數組。

同樣的規則繼續看:float *fp(float)。由于()的優先級大于*,所以說明這首先是一個函數,函數的返回類型是指向float類型的指針。

void (*fp)(float)。由于括號的存在,代表首先這是一個指針,這個指針指向什么呢?指向的是一個參數個數為1,類型是float的函數。

接下來看一個復雜的:(*(void(*)())0)();讓我們慢慢來拆分,首先(void(*))()是一個函數指針類型的原型,因此(void(*)())0是將0轉換成一個函數指針類型,那么(*(void(*)())0)也就是地址0處所在的函數,那么上面一條語句的意思也就是執行地址0處的函數。

上面的語句看起來非常復雜繁瑣,因此我們在實際工作中,最好使用typedef來重新制定一下比較復雜的數據類型:

例如上面的例子:我們不妨typedef void (*functionPoint)(); 這樣我們就可以非常簡單的

(*(functionPoint)0)();

這樣是不是容易理解了很多呢?

?

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的C语言学习笔记(16)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。