亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C之指針閱讀技巧(三十三)

發布時間:2020-07-25 07:04:33 來源:網絡 閱讀:662 作者:上帝之子521 欄目:編程語言

        在 C 語言中,指針是精華所在了,那么我們總是覺得指針是最難理解的。它也是筆試面試中必問的知識點之一,今天我們就來看看那些復雜難懂的指針是怎么閱讀的。

        在閱讀指針相關的函數中,我們有個左右法則(這是唐長老總結的)。我們來具體看看它到底是怎樣的,a> 首先從最里層的圓括號中未定義的標識符看起;b> 先往右看再往左看;c> 遇到圓括號或方括號時可以確定部分類型,并調轉方向;d> 重復 b 和 c 步驟,直至閱讀結束。那么我們下來以代碼為例進行分析

#include <stdio.h>

int main()
{ 
    int (*p)(int);

    int (*p1)(int*, int (*f)(int*));
    
    int (*p2[5])(int*);
    
    int (*(*p3)[5])(int*);

    int*(*(*p4)(int*))(int*);
    
    int (*(*p5)(int*))[5];

    return 0;
}

        那么我們看到上面定義了好多復雜的函數,我們來一一分析

int (*p)(int);
==> p 為指針,指向函數,指向的函數有個int型參數,返回值為int型

int (*p1)(int*, int (*f)(int*));
==> p1 為函數指針,指向的函數有int*,f 為第二個參數,它是函數指針,指向的函數參數為int*,返回值為int;;; 返回值類型為int

int (*p2[5])(int*);
==> p2 為數組,有5個元素,每個元素是指針,指向函數,類型為int(int*)

int (*(*p3)[5])(int*);
==> p3 為指針,數組指針,指向的數組有5個元素,這5個元素為指針,是函數指針,指向的函數類型為int(int*)

int*(*(*p4)(int*))(int*);
==> p4 為指針,函數指針,參數為int*,返回值為指針,是函數指針,指向的函數類型為int*(int*)

int (*(*p5)(int*))[5];
==> p5 為指針,函數指針,參數為int*,返回值為指針,指向數組,指向的數組類型為int[5]

        我們看到其實經過分析之后,函數也不難,但是這樣它的可讀性很差。我們可以將上面最后一個改用 typedef 進行重命名,如下

typedef int(ArrayType)[5];
typedef ArrayType*(FuncType)(int*);

FuncType* p5;

        經過重命名之后,我們看到 p5 為一個指針,這個指針的類型為 ArrayType*(int*);而 ArrayType 的類型為 int[5]。我們這樣是不是可讀性一下子就提高了呢。

        那么左右法則總結于編譯器對指針變量的解析過程,指針閱讀練習的意義在于理解指針的組合定義,我們可通過 typedef 簡化復雜指針的定義


        歡迎大家一起來學習 C 語言,可以加我QQ:243343083

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇沅| 霍林郭勒市| 资兴市| 灌云县| 伽师县| 武强县| 逊克县| 西和县| 北票市| 碌曲县| 黔西县| 乡宁县| 衡山县| 盖州市| 清新县| 和林格尔县| 银川市| 徐汇区| 古蔺县| 台东县| 固阳县| 友谊县| 蒙山县| 申扎县| 澎湖县| 麟游县| 浮山县| 行唐县| 岫岩| 旬邑县| 张家界市| 长沙市| 成安县| 宣威市| 岑巩县| 岱山县| 山丹县| 邵东县| 金塔县| 来安县| 仪陇县|