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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

c语言 复杂指针声明,C指针复杂声明

發布時間:2024/9/27 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言 复杂指针声明,C指针复杂声明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于這種復雜的聲明格式,可以采用替換的形式來看明白。

比如char (*(*x())[])();這個, 你可以找個 a代替括號里面的,然后逐步代替。

char (*(*x())[])();

// 用a 代替 (*x())[]

char (*a)();

// 上面的a的意思就是一個函數指針,空參,返回char

// 再看(*x())[],用b代替 *x()

(b)[];

// b是一個數組,而且數組每一項是一個指針a

*x();

// x是一個空參函數,返回類型是一個b的指針

所以上面的x是一個函數,參數為空,返回值是一個數組的指針,數組的每一項是一個指針,指向的是一個函數指針,這個函數的形式是空參返回char。

所以使用的方式就是

char f1(){return 1;};

char f2(){return 2;};

char (*(*x())[2])(){

typedef char A();

A* f = f1;

typedef A* B[];

B arr = {f,f};

typedef B* F();

return &arr;

};

同樣的道理

char (*(*x[3])())[5];這個表達式的使用方式就是

typedef char A[5];

A* b(){

static A a = {1,2,3,4,5};

return &a;

}

typedef A* B();

char (*(*x[3])())[5] = {&b,&b,&b};

也就是說x 是個有3個值的數組,每個數組的類型是一個函數指針,這個函數(b)是空參,返回的是一個指針,指向一個含有5個char的數組。

總結

以上是生活随笔為你收集整理的c语言 复杂指针声明,C指针复杂声明的全部內容,希望文章能夠幫你解決所遇到的問題。

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