函数指针的问题,后面三个不会

hzjiaming 2008-03-25 02:36:27

一个函数,它以指向字符的指针和对整数的引用为参数,不返回值:void f(char*,int&);
一个指向这个函数的指针:void (*p)(char*,int&)=f;

接下来三个怎么写?
一个以这种指针为参数的函数?? //void fo(p);
一个返回这种指针的函数?? ////p func();
一个函数,它以一个这样的指针作为参数,并返回其参数作为返回值?? ////typedef p SIG(*p);
...全文
105 15 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
mymtom 2008-03-25
  • 打赏
  • 举报
回复

//
// function_pointer.h
//

#ifndef FUNCTION_POINTER_H
#define FUNCTION_POINTER_H
void f (char *, int *);
extern void ( *pf0 ) (char *, int *);
void (*fpf0( )) (char *, int *);
void (*fpf (void (*pf) (char *, int *))) (char *, int *);
#endif // FUNCTION_POINTER_H
mymtom 2008-03-25
  • 打赏
  • 举报
回复
一个简单例子:

//
// function_pointer.h
//

#ifndef FUNCTION_POINTER_H
#define FUNCTION_POINTER_H
void f (char *, int *);
extern void ( *pf0 ) (char *, int *);
void (*fpf0( )) (char *, int *);
void (*fpf (void (*pf) (char *, int *))) (char *, int *);
#endif // FUNCTION_POINTER_H



//
// function_pointer.cpp
//

#include <iostream>
using namespace std;

#include "function_pointer.h"

void
f(char *pc, int *pi)
{
cout << ">>>> " << __PRETTY_FUNCTION__ << endl;
cout << "==== " << "*pc=" << *pc << endl;
cout << "==== " << "*pi=" << *pi << endl;
cout << "<<<< " << __PRETTY_FUNCTION__ << endl;
}

void (*pf0)(char *, int *) = 0;

void
(*fpf0())(char *, int *)
{
cout << ">>>> " << __PRETTY_FUNCTION__ << endl;
cout << "<<<< " << __PRETTY_FUNCTION__ << endl;
return f;
}

void
(*fpf (void (*pf) (char *, int *))) (char *, int *)
{
cout << ">>>> " << __PRETTY_FUNCTION__ << endl;
cout << "<<<< " << __PRETTY_FUNCTION__ << endl;
return pf;
}



//
// main.cpp
//
#include <iostream>
using namespace std;
#include "function_pointer.h"

int
main()
{
int i;
char c;

i = 9;
c = 'A';
f(&c, &i);

pf0 = f;
pf0(&c, &i);

pf0 = fpf0();
pf0(&c, &i);

pf0 = fpf(fpf0());
pf0(&c, &i);

return 0;
}

xmu_才盛 2008-03-25
  • 打赏
  • 举报
回复
有点想吐,不过复习了一下,巩固了一下,都经过编译的
void f (char *p,int *a)
{}
void (*p) (char *p,int *a)=f;

void fo(void (*p)(char *,int *))
{}

typedef void (*pp)(char *p,int *a);
pp fun()
{
return &f;
}
//或者这样

void (*fun1()) (char *p,int *a)
{
return &f;
}

//指针参数,返回指针

pp fun2(pp p)
{
return &f;
}

//或者
void (*fun3 (void (*p)(char *p,int *a))) (char *p,int *a)
{
return &f;
}
jieao111 2008-03-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hzjiaming 的回复:]
引用 7 楼 paidfighting 的回复:
无聊的题目


我不会,不行啊,你可以不要来这里放屁
[/Quote]

哈哈~~~
hzjiaming 2008-03-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hai040 的回复:]
2.void (*func())(char*,int&);
[/Quote]

这个不对吧?
hzjiaming 2008-03-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 paidfighting 的回复:]
无聊的题目
[/Quote]

我不会,不行啊,你可以不要来这里放屁
hai040 2008-03-25
  • 打赏
  • 举报
回复
2.void (*func())(char*,int&);
3.void (*func(void (*)(char*,int&)))(char*,int&);
hzjiaming 2008-03-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sheenl 的回复:]
typedef void (*pFun)(char*, int&)
void foo(pFun);

pFun foo(void);

pFun foo(pFun);

如果不想typedef, 就用 void (*)(char*, int&)代替pFun.
[/Quote]

void (*)(char*,int&) func(); 这个编译不过
paidfighting 2008-03-25
  • 打赏
  • 举报
回复
无聊的题目
hzjiaming 2008-03-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 csdn5211 的回复:]
2 void (*)(char*,int&) func();
[/Quote]

这个编译不过
ttkk_2007 2008-03-25
  • 打赏
  • 举报
回复
修改一下
2.Fun f();
sheenl 2008-03-25
  • 打赏
  • 举报
回复
typedef void (*pFun)(char*, int&)
void foo(pFun);

pFun foo(void);

pFun foo(pFun);

如果不想typedef, 就用 void (*)(char*, int&)代替pFun.
ouyh12345 2008-03-25
  • 打赏
  • 举报
回复
typedef void (*PFun)(char*,int&);
void fun(PFun f);
PFun fun();
PFun fun_an(PFun f);
csdn5211 2008-03-25
  • 打赏
  • 举报
回复
1 void fo( void (*p)(char*,int&) );
2 void (*)(char*,int&) func();

ttkk_2007 2008-03-25
  • 打赏
  • 举报
回复
typedef void (*Fun)(char*,int&);
1. void f(Fun);
2.Fun void f();
3.Fun f(Fun);
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-25 02:36
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下