C语言指针问题,新手小白求教,被绕得头晕了

RwinR 2019-02-03 05:29:43
下面的数据声明如何解释:
(1)float (**p)(10);
(2)double *(*p)[10];
(3)double (*p[10])();
(4)int *((*p)[10]);
(5)int (*(p)(int,int))(int);
...全文
260 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
X_kine 2019-02-07
  • 打赏
  • 举报
回复
第一个是指向指针的指针
threenewbee 2019-02-06
  • 打赏
  • 举报
回复
函数指针了解下,把一个函数作为一个参数,一般用于回调函数。
qybao 2019-02-06
  • 打赏
  • 举报
回复
(1)float (**p)(10); //这个是否有笔误(圆括号->方括号)?感觉像指向flat f(int)的函数指针的指针,且在以参数为10调用;如果确定没有笔误是个声明,那么可以解读为p为float f(int a = 10)这样函数类型的函数指针的指针
(2)double *(*p)[10]; //p是一个指向长度为10的,存放类型为double*的数组指针(也就是p是个指针,指向一个数组,该数组长度为10,类型为double*)
(3)double (*p[10])();//p是长度为10的,存放类型为double (*f)()这样的函数指针类型的指针数组(也就是p是个指针数组,该数组长度为10,类型为double (*f)()这样的函数指针)
(4)int *((*p)[10]);//同(2),[]优先级高于*,所以外层圆括号有没有是一个效果
(5)int (*(p)(int,int))(int);//p是一个void* f1(int,int)的指针函数,该指针函数返回一个指向int (*f2)(int)函数类型的指针

个人理解供参考。
一般复杂的指针定义,建议用typedef

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧