c语言 复杂指针声明,C指针复杂声明
對于這種復(fù)雜的聲明格式,可以采用替換的形式來看明白。
比如char (*(*x())[])();這個(gè), 你可以找個(gè) a代替括號里面的,然后逐步代替。
char (*(*x())[])();
// 用a 代替 (*x())[]
char (*a)();
// 上面的a的意思就是一個(gè)函數(shù)指針,空參,返回char
// 再看(*x())[],用b代替 *x()
(b)[];
// b是一個(gè)數(shù)組,而且數(shù)組每一項(xiàng)是一個(gè)指針a
*x();
// x是一個(gè)空參函數(shù),返回類型是一個(gè)b的指針
所以上面的x是一個(gè)函數(shù),參數(shù)為空,返回值是一個(gè)數(shù)組的指針,數(shù)組的每一項(xiàng)是一個(gè)指針,指向的是一個(gè)函數(shù)指針,這個(gè)函數(shù)的形式是空參返回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];這個(gè)表達(dá)式的使用方式就是
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 是個(gè)有3個(gè)值的數(shù)組,每個(gè)數(shù)組的類型是一個(gè)函數(shù)指針,這個(gè)函數(shù)(b)是空參,返回的是一個(gè)指針,指向一個(gè)含有5個(gè)char的數(shù)組。
總結(jié)
以上是生活随笔為你收集整理的c语言 复杂指针声明,C指针复杂声明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ibm服务器 p5 硬盘,IBM虚拟化实
- 下一篇: java 异常抛出空指针异常_java.