《C和指针》—— 第13章 高级指针 int *(*(*(*f)())[6])()

本文详细解析了高级指针的声明与描述之间的转换过程,通过实例展示了复杂函数指针的声明方式,并提供了一种从描述到声明的逻辑书写思路。涉及多种高级指针结构,包括函数返回指针、数组指针等,适合深入理解C语言指针的读者。
摘要由CSDN通过智能技术生成

注意:此为原创文章,未经同意,请勿随意转载。

1.高级指针的声明到描述的推断过程

以以下指针为例:
int *(*(*(*f)())[6])();

在这里插入图片描述

1.1 其他小例子

序号声明描述
1int f();f是个函数,返回整数
2int f[3];f是个包含3个元素的数组,元素类型是整数
3int **f();f是个函数,返回类型是指向整型的指针的指针
4int (*f)();f是个指针,指向函数,返回整数,
5int (*f)[6];f是个指针,指向数组,数组有3个元素,元素类型为整数;
6int *f();f是个函数,返回整型指针
7int **(*f[6])();f是个数组,元素类型为指针,指向函数;即数组元素类型为函数指针;返回值为指向整型的指针的指针
8int **f[6];f是个数组,元素类型为指向整型的指针的指针
9int *(*f)[6];f是个指针,指向数组,即f是个数组指针;返回指向整型的指针
10int *(*f())();f是个函数,返回指针,指针指向函数,即返回值类型为函数指针;函数的返回值又是指向整型的指针
11int (**(*f)())();f是个指针,指向函数,即f是个函数指针;函数返回指针p1,该指针p1指向另一个指针p2,另一个指针p2指向函数,即p2是个函数指针,该函数指针返回整数;即f是个函数指针,f指向的函数返回一个指向函数指针的指针,最后返回的函数返回值为整数
12int (*(*f)())[6];f是个指针,指向函数,即f是个函数指针;该函数返回一个指针,该指针指向int型数组;即f是个函数指针,返回一个指向整形数组的指针
13int *(*(*(*f)())[6])();f是个指针,该指针指向一个函数,函数的返回一个数组指针,数组元素为指针,指向一个函数,即数组元素为函数指针,函数的返回值为整型指针。

2.高级指针从描述到声明的书写思路

以下述声明的描述为例:
返回值为【指向 " 返回值为int型指针的函数指针 " 的数组的指针 】的函数指针

在这里插入图片描述

2.1 其他小例子

序号描述声明
1int型指针int *f;
2int型指针的指针int** f;
3int型数组int f[6];
4指向【int型数组】的指针int (*f)[6];
5int型指针数组int* f[6];
6指向【int型指针数组】的指针int* (*f)[6];
7int型指针的指针数组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和指针》

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值