这个简单的指针问题,我不能准确地说出答案。寻求权威解答。

Featured 2005-02-25 11:23:37

typedef int( *function) (int i);
和 typedef int *function (int i); 的区别?

麻烦说得准确点儿。
...全文
221 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
ncucf 2005-03-01
  • 打赏
  • 举报
回复
c++的典型诟弊之一,建议楼主不要去弄明白,不然你会丧失对面向对象语言机制的一丁点理解的!
c++也许很多地方都设计的很好,这里是个败笔!
谁如果大肆的跟你宣讲他在这方面的理解和领悟,大概是发疯了,跟自己的大脑过不去!
学学java和c#是如何处理这些问题的吧!
Featured 2005-03-01
  • 打赏
  • 举报
回复
to 楼上:感谢安慰
但我觉得这个还没有到达变态的境界,这个还是值得搞清楚的吧
flight_lcf 2005-03-01
  • 打赏
  • 举报
回复
明白了
ahzhuo 2005-02-28
  • 打赏
  • 举报
回复
1。定义了函数的指针类型,该类型的指针可以指向与该类型对应的不同函数的入口,例如:

#include <stdio.h>

typedef int( *function) (int i);

int fun1(int a)
{
return a + 1;
}

int fun2(int b)
{
return b * 100;
}

void main()
{
function all[2] = {
fun1, fun2
};
function f = 0;
int n = 0;

for (int i = 0; i < 2; i ++)
{
f = all[i];
n = (*f)(i);
printf("%d\n", n);
}
}

输出将会是:
1
100

2。仅仅就是定义了一个函数类型,每什么大的实际用处,顶多就是用在扩文件引用函数时方便函数的声明罢了。
Featured 2005-02-28
  • 打赏
  • 举报
回复
那你还是没有看明白。
他不是说了用法了吗
至于什么时候用,我想C++的教材上你肯定学过吧
flight_lcf 2005-02-28
  • 打赏
  • 举报
回复
Panic_1(觉觉ing) 我觉得说很明白,但函数指针会在什么时候用,怎么用呀
Featured 2005-02-28
  • 打赏
  • 举报
回复
楼上的有区别吗?
C++好像对空格是视而不见的吧
nonocast 2005-02-28
  • 打赏
  • 举报
回复
int *func = (int*) func
int (*func) = (int*)func
erben 2005-02-27
  • 打赏
  • 举报
回复
再次鼓掌
Panic_1 2005-02-25
  • 打赏
  • 举报
回复
这样比较好理解:
typedef int function (int i);
typedef int( *function1) (int i);
typedef int *function2 (int i);
typedef int *(*function3) (int i);

function f;
等同于语句
int f(int i);

function1 f;
等同于 int (* f)(int i);
也等同于
function * f;

function2 f;
等同于
int * f(int i);

function3 f;
等同于
int * (*f)(int i);
也等同于
function2 * f;
Panic_1 2005-02-25
  • 打赏
  • 举报
回复
搞错了。。。
前者是定义一个函数指针类型
用法:
int f(int i);
function pf = f;

后者是定义一个函数类型,它被typedef展开后将得到一个函数对象,用法:
int *f(int i)
{
//必须有函数体,或者是已有的库函数。
}

function f;
//这里f就是前面定义的那个函数,想当于函数声明
int *f(int i);
wxdvc 2005-02-25
  • 打赏
  • 举报
回复
gz
Panic_1 2005-02-25
  • 打赏
  • 举报
回复
后者和
typedef int *(*function) (int i);
完全等同
Featured 2005-02-25
  • 打赏
  • 举报
回复
楼上的说得有道理喔。鼓掌
nonowhy 2005-02-25
  • 打赏
  • 举报
回复
都没有说到实质!
1。 typedef int( *function) (int i);
2。 typedef int *function (int i); 的区别?
首先,1 2 定义了不同的两个类型!
不同是1是定义了一个用来定义指针函数的类型,返回值int,形参int。2定义了一个定义函数的类型,这样的函数返回值是int*,形参是int!
jun_01 2005-02-25
  • 打赏
  • 举报
回复
晕啊
贵子潘 2005-02-25
  • 打赏
  • 举报
回复
“c/c++深层探索”这本书上有解数
还有其他一些很容易搞混的概念
Featured 2005-02-25
  • 打赏
  • 举报
回复
你说 typedef int *function (int i); 是指针函数,什么叫“指针函数”啊?

还有,并不是每本C++的书上都讲到的,讲到的也少有透彻的。
YuccaNJ 2005-02-25
  • 打赏
  • 举报
回复
路过,结果被解释晕了。
zcm242004 2005-02-25
  • 打赏
  • 举报
回复
前者是函数指针,后者是指针函数,建议楼上好好看下标准C++吧
加载更多回复(1)

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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