OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4682|回复: 10

请教一个C语言 指针和函数的问题?

[复制链接]

9

主题

23

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
242
金钱
242
注册时间
2013-1-5
在线时间
4 小时
发表于 2013-11-29 23:25:46 | 显示全部楼层 |阅读模式

我在一个程序里看见下面两句!!

typedef ?char (* httpd_cgifunction)(struct httpd_state *, char *);

httpd_cgifunction httpd_cgi(char *name);

  我知道httpd_cgifunction是(struct httpd_state *, char *)函数的指针!
但是 最后一句 httpd_cgifunction(函数指针)+ httpd_cgi(char *name)(函数);
我想问一下 一个函数指针 加上 另外一个函数(httpd_cgi(char *name)) 是什么意思

是不是 (httpd_cgi(char *name))函数的返回值 必须是httpd_cgifunction(函数指针)?

求解?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

54

主题

537

帖子

0

精华

高级会员

Rank: 4

积分
797
金钱
797
注册时间
2012-2-27
在线时间
7 小时
发表于 2013-11-30 00:15:36 | 显示全部楼层
typedef ?char (* httpd_cgifunction)(struct httpd_state *, char *);
函数指针?(* httpd_cgifunction)
返回类型,?char
参数,(struct httpd_state *, char *)
这样理解对不?
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2013-11-30 08:47:20 | 显示全部楼层
同求。。。
回复 支持 反对

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2013-11-30 09:44:56 | 显示全部楼层
“httpd_cgifunction httpd_cgi(char *name)” 这是一个指针函数,而这个返回值是函数指针。
“typedef ?char (* httpd_cgifunction)(struct httpd_state *, char *);” 这是类别名,httpd_cgifunction 是一个 返回值为char 参数为(struct httpd_state *, char *)的函数指针类型
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

9

主题

23

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
242
金钱
242
注册时间
2013-1-5
在线时间
4 小时
 楼主| 发表于 2013-11-30 10:28:14 | 显示全部楼层
谢谢 大家的 回复!! 对我帮助 很大!! 我想问一下!! 能不能给例子???我只是在实际运用中!不是很明白
回复 支持 反对

使用道具 举报

9

主题

23

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
242
金钱
242
注册时间
2013-1-5
在线时间
4 小时
 楼主| 发表于 2013-11-30 12:08:27 | 显示全部楼层
回复【4楼】xiaoyan:
---------------------------------
两语句结合  是?

char  ((* httpd_cgifunction)(struct httpd_state *, char *)) httpd_cgi(char *name) 但是 我编译器 过不了,

请问 ?  该怎么改啦?
回复 支持 反对

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2013-11-30 14:14:37 | 显示全部楼层
回复【6楼】bigwudan:
---------------------------------
这样肯定编译不过“ ((* httpd_cgifunction)(struct httpd_state *, char *))”这是个未定义的类型。你得先构造类型。
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2256
金钱
2256
注册时间
2010-12-16
在线时间
206 小时
发表于 2013-11-30 22:38:34 | 显示全部楼层
回复【4楼】xiaoyan:
“httpd_cgifunction httpd_cgi(char *name)” 这是一个指针函数,而这个返回值是函数指针。
---------------------------------

带上<*>才是返回函数指针.不带<*>是定义对应的声明.

httpd_cgifunction* httpd_cgi(char *name)”
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复 支持 反对

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2013-11-30 23:29:28 | 显示全部楼层
回复【8楼】shihantu:
---------------------------------
“httpd_cgifunction httpd_cgi(char *name)”这个确实是声明,但是你的说法好像也有点问题。这是函数体。

static
PT_THREAD(nullfunction(struct httpd_state *s, char *ptr))
{
  SOCK_BEGIN(&s->sout);
  SOCK_END(&s->sout);
}
/*---------------------------------------------------------------------------*/
httpd_cgifunction
httpd_cgi(char *name)
{
  const struct httpd_cgi_call **f;

  /* Find the matching name in the table, return the function. */
  for(f = calls; *f != NULL; ++f) {
    if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) {
      return (*f)->function;
    }
  }
  return nullfunction;
}
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-1 00:20:21 | 显示全部楼层
我觉得是:
?char (* httpd_cgifunction)(struct httpd_state *, char *);
是一个函数指针.而在前面加typedef,将其定义成一种类型.
然后到:
httpd_cgifunction 
httpd_cgi(char *name) 
那就是定义函数httpd_cgi的返回值为:?char (* httpd_cgifunction)(struct httpd_state *, char *)
这么个函数指针类型.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2256
金钱
2256
注册时间
2010-12-16
在线时间
206 小时
发表于 2013-12-1 13:51:30 | 显示全部楼层
回复【9楼】xiaoyan:
---------------------------------
回复【10楼】正点原子:
---------------------------------
的确是这样,这几天学习结构体和类的构造方式迷糊了.
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-8 08:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表