24小时热门版块排行榜    

查看: 349  |  回复: 2

jianchaoyv

金虫 (小有名气)

[交流] 【求助】请高手指点一个指针问题!!! 已有2人参与

char*(*c[10])(int **p) 这个语句的含义?

[ Last edited by jianchaoyv on 2010-12-13 at 20:47 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhougc

木虫 (正式写手)

黑社会老大

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+3):辛苦了! 2010-12-14 09:51:26
这个问题很有意思,
让我们一层一层的剥掉它
char*(*c[10])(int **p)
应该见过这样的结构吧?
int (*f)(int i)
f是一个函数指针,表示指向函数的首地址,其实这个结构和int f(int i)是完全一样的。
因为f表示函数的名称,指向函数的首地址,而(*f)也是指向函数的首地址。

其实char*(*c[10])(int **p)这个表达式和这个结构类似,只是:
int 对应于 char *,表示函数的返回值是字符指针;
f 对应于 c[10],表示函数指针是一个数组;
int i 对应于 int **p,表示参数是一个指向指针的指针;

那么c[10]表示函数指针又代表什么意思呢?
它其实是一个数组,这个数组中的每一个元素都是一个指向函数名的指针,
(*c[10])可以理解为有十个元素的数组,
每个元素都是指向一个函数名的指针。

综合起来这个表达式可以理解成这个样子:
有一个十个元素的数组,每个数组都是一个指向一个函数名的指针;
这个被指向的函数,它的参数是int **p,表示一个指向指针的指针;
而这个函数的返回值是char *型。

建议你看一下指针数组和数组指针、函数指针和指针函数的区别。
--------------------------------------------------------------------------看着我表情呆滞的头像,记住我!这个社会已经让我没办法笑出来.请各位版主按时缴...
2楼2010-12-13 22:32:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

linyujack

铜虫 (小有名气)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+3):一样辛苦了,欢迎常来程序语言版! 2010-12-14 09:51:57
(下面部分定义跟例子百度来的)

char *:
在C/C++中有专门的语义,既不同于signed char *,也不同于unsigned char *,专门用于指以'\0'为结束的字符串。

指向函数的指针:
函数名是该代码段的首地址,比如“int *fun()”。

双重指针:指向指针的指针,相当于一个二维数组。
------------------------------------------------------------------------
看这个例子:
#include   
void inc(int *val)   
{   
(*val)++;   
}   
main()  
 {   
   void (*fun)(int *);  
 int a=3;  
 fun=inc;  
 (*fun)(&a);  
 printf("%d" , a);  
 }
--------------------------------------------------------------
  char*(*c[10])(int **p) 与例子中的 void (*fun)(int *)很相似,
貌似声明了一个指向函数的指针:
指针所指向的函数的返回值为Char* 类型,
指针的命名存储在C[10]数组中,也就是有一组10个的指向函数的指针,
指针所指向的函数的传参为int型双重指针**p。

以上解释,纯属个人理解,没有程序验证过。
-----------------------------------------------------------------------
发晚一步,楼上已经有解。

[ Last edited by linyujack on 2010-12-13 at 22:39 ]
卓越不仅仅是单一的举动,而是一种习惯。
3楼2010-12-13 22:36:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 jianchaoyv 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 CyTWnZiM0cS6 2026-08-02 3/150 2026-08-02 20:43 by 3VGOm6paSgqv
[考研] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 AS6fX1tr1on4 2026-08-02 9/450 2026-08-02 20:32 by 3VGOm6paSgqv
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 AS6fX1tr1on4 2026-08-02 5/250 2026-08-02 20:31 by 3VGOm6paSgqv
[公派出国] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 AS6fX1tr1on4 2026-08-02 7/350 2026-08-02 20:24 by 3VGOm6paSgqv
[基金申请] 这种情况还有戏吗 +5 drbart 2026-07-27 12/600 2026-08-02 20:21 by drbart
[硕博家园] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 AS6fX1tr1on4 2026-08-02 9/450 2026-08-02 20:18 by 3VGOm6paSgqv
[考博] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 AS6fX1tr1on4 2026-08-02 10/500 2026-08-02 20:12 by 3VGOm6paSgqv
[论文投稿] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 AS6fX1tr1on4 2026-08-02 14/700 2026-08-02 20:11 by 3VGOm6paSgqv
[基金申请] 面上提前没消息,有中的吗 +11 archvillain 2026-08-02 13/650 2026-08-02 20:09 by symmetry
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +4 AS6fX1tr1on4 2026-08-02 13/650 2026-08-02 20:04 by 3VGOm6paSgqv
[找工作] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +4 cBGhfJFuNMca 2026-08-02 13/650 2026-08-02 20:04 by 3VGOm6paSgqv
[考博] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 cBGhfJFuNMca 2026-08-02 17/850 2026-08-02 20:03 by 3VGOm6paSgqv
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 cBGhfJFuNMca 2026-08-02 10/500 2026-08-02 20:03 by 3VGOm6paSgqv
[博后之家] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +5 cBGhfJFuNMca 2026-08-02 17/850 2026-08-02 19:54 by 3VGOm6paSgqv
[考博] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +5 cBGhfJFuNMca 2026-08-02 15/750 2026-08-02 19:54 by 3VGOm6paSgqv
[博后之家] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 AS6fX1tr1on4 2026-08-02 8/400 2026-08-02 18:24 by ca3DVAx4OB19
[博后之家] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +4 cBGhfJFuNMca 2026-08-02 20/1000 2026-08-02 18:04 by ca3DVAx4OB19
[高分子] HXDI做水性聚氨酯乳液,是不是特别容易出渣 15+3 yuyusuv 2026-07-29 3/150 2026-07-31 09:21 by huizingga
[基金申请] 系统今天又提示维护了,估计离放榜不远了 +11 winnerche 2026-07-29 15/750 2026-07-30 23:08 by jnhyjjm
[基金申请] 你们的时间戳变了吗 +3 archvillain 2026-07-30 4/200 2026-07-30 18:53 by levinzhwen
信息提示
请填处理意见