注意:此为原创文章,未经同意,请勿随意转载。
1.高级指针的声明到描述的推断过程
以以下指针为例:
int *(*(*(*f)())[6])();
1.1 其他小例子
序号 | 声明 | 描述 |
---|---|---|
1 | int f(); | f是个函数,返回整数 |
2 | int f[3]; | f是个包含3个元素的数组,元素类型是整数 |
3 | int **f(); | f是个函数,返回类型是指向整型的指针的指针 |
4 | int (*f)(); | f是个指针,指向函数,返回整数, |
5 | int (*f)[6]; | f是个指针,指向数组,数组有3个元素,元素类型为整数; |
6 | int *f(); | f是个函数,返回整型指针 |
7 | int **(*f[6])(); | f是个数组,元素类型为指针,指向函数;即数组元素类型为函数指针;返回值为指向整型的指针的指针 |
8 | int **f[6]; | f是个数组,元素类型为指向整型的指针的指针 |
9 | int *(*f)[6]; | f是个指针,指向数组,即f是个数组指针;返回指向整型的指针 |
10 | int *(*f())(); | f是个函数,返回指针,指针指向函数,即返回值类型为函数指针;函数的返回值又是指向整型的指针 |
11 | int (**(*f)())(); | f是个指针,指向函数,即f是个函数指针;函数返回指针p1,该指针p1指向另一个指针p2,另一个指针p2指向函数,即p2是个函数指针,该函数指针返回整数;即f是个函数指针,f指向的函数返回一个指向函数指针的指针,最后返回的函数返回值为整数 |
12 | int (*(*f)())[6]; | f是个指针,指向函数,即f是个函数指针;该函数返回一个指针,该指针指向int型数组;即f是个函数指针,返回一个指向整形数组的指针 |
13 | int *(*(*(*f)())[6])(); | f是个指针,该指针指向一个函数,函数的返回一个数组指针,数组元素为指针,指向一个函数,即数组元素为函数指针,函数的返回值为整型指针。 |
2.高级指针从描述到声明的书写思路
以下述声明的描述为例:
返回值为【指向 " 返回值为int型指针的函数指针 " 的数组的指针 】的函数指针
2.1 其他小例子
序号 | 描述 | 声明 |
---|---|---|
1 | int型指针 | int *f; |
2 | int型指针的指针 | int** f; |
3 | int型数组 | int f[6]; |
4 | 指向【int型数组】的指针 | int (*f)[6]; |
5 | int型指针数组 | int* f[6]; |
6 | 指向【int型指针数组】的指针 | int* (*f)[6]; |
7 | int型指针的指针数组 | int* *f[6]; |
8 | 返回值为int的函数 | int f(); |
9 | 返回值为【int型指针】的函数 | int* f(); |
10 | 返回值为【int型指针的指针】的函数 | int** f(); |
11 | 返回值为int的函数指针 | int (*f)(); |
12 | 返回值为int型指针的函数指针 | int* (*f)(); |
13 | 返回值为int型指针的指针的函数指针 | int** (*f)(); |
14 | 返回值为int的函数指针的数组 | int (*f[6])(); |
15 | 指向【返回值为int型指针的函数】的指针的数组 | int* (*f[6])(); |
16 | 指向【返回值为int型指针的指针的函数】的指针的数组 | int** (*f[6])(); |
17 | 返回值为【返回值为int的函数指针】的函数 | int (*f())(); |
18 | 返回值为【返回值为int的函数的指针的指针】的函数 | int (**f())(); |
19 | 返回值为【返回值为int型指针的函数指针】的函数 | int* (*f())(); |
20 | 返回值为【返回值为int的函数指针】的函数指针 | int (*(*f)())(); |
21 | 返回值为【返回值为int的函数指针的指针】的函数指针 | int (**(*f)())(); |
22 | 返回值为【返回值为int型指针的函数指针】的函数指针 | int *(*(*f)())(); |
23 | 返回值为【指向int型数组的指针】的函数指针 | int (*(*f)())[6]; |
24 | 返回值为【指向int型指针数组的指针】的函数指针 | int *(*(*f)())[6]; |
25 | 返回值为【指向 " 返回值为int型指针的函数指针 " 的数组的指针 】的函数指针 | int* (*(*(*f)())[6])(); |
3. 文献
题目来自《C和指针》