如何理解函数指针和指针函数的区别?

csdn2010 2004-06-20 07:04:32
能够用简单的程序说明吗?
...全文
1468 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
oliver88888888 2004-07-07
  • 打赏
  • 举报
回复


话说远一点,我由衷的希望在软件上做的比较深入的朋友们有机会学学硬件以及其它相关知识,尤其是做底层开发和嵌入式设计的。这对软件技术的提高有非常大的帮助,否则很多事情你只知道该这样但不会明白为什么该这样。我这个观点在我现在的IC公司Project Manager那里也得到了验证。他告诉我们公司现在的802.11芯片产品的软件经理原本是做该芯片硬件设计的,某某某原本是做软件的,现在在做IC,类似的例子还有很多,只是在国内这样的风气不是非常流行。

我有一些心得体会与大家分享,只有当我干好本职工作后,我才会学习与工作关系不大的技术,这样公司的上司才不至于反感,在入门阶段的问题我通常不去问那些资深人士,而是问一些资历比较浅的朋友,比如刚毕业不久的学生,因为他们往往会跟你详细的讲解,而资深人士通常觉得你的问题太简单,所以回答的也很简单,我又不好意思多问。等技术上了一定的层次后我才会问他们,他们也能给你比较深入的回答。另外,有些朋友说我机会比较好,他们也希望能从事新的工作可惜没有机会,我听了只有苦笑,我的机会了解的人都应该知道,我没有出生在什么IT世家:)也没有谁一路提拔我,所有的路都是自己走出来的,我母亲去世比较早,我的后母(我叫她阿姨)看着我努力过来的,一次她看我大年30还在写程序,她说像我这样努力木头都能学出来。

我的最终目的是IC而不是PCB,所以我下一步的准备开始学习IC设计的知识。公司的同事没有懂IC设计的,后面的路又要靠自己了,我买了不少相关的书,在网上也查了很多的资料,我花了大量的时间去学习VHDL,并且用软件进行了一些简单的设计和仿真(没有设计ASIC,只是针对FPGA),随着学习的深入,我渐渐明白了IC设计的基本流程,同时也明白了这条路的艰辛。这个时候我已经做好了跳槽的准备,我向一家业界又一定知名度的IC设计公司投了简历,并通过了漫长的面试(4个多小时)。其他的一切我都比较满意,唯独薪资差强人意,我也明白原因,因为我是这个行业的新人,我没有经验,我再一次将自己清零了。公司老板问我6000多一个月能不能接受,我知道他也是照章办事。想想我通信行业的朋友们,基本上都是年薪10万以上,月薪过万的也比比皆是,朋友们也帮我介绍了不少待遇不错的公司,我该怎么选择,当时我很犹豫,我热爱我的事业,我向往我的追求,但我也是一个普通的人,我也需要养家糊口,我也想早一点买房买车。生活给我出了一道难题。

爱因斯坦在63岁时说过“一个人没有在30岁以前达成科学上的最大成就,那他永远都不会有。”这句话给了我很大的压力和震动,我马上就26岁了,离30只有四年时间,我必须抓紧这几年宝贵的时间,努力达到我技术上的最高峰。为了这个理想,为了能离自己的梦更近一些,我选择了这家IC公司,我明白自己的薪资和公司刚进来的硕士研究生相差无几,但为了今后的发展只能忍受,一切又得重新开始。换行业是一个非常痛苦的过程,尤其从一个春风得意的位置换到一个陌生的岗位,感觉象从温暖的被子里钻出来跳进冰水中,让人难以接受。在原来那家通信公司,我是唯一两年时间涨了五次工资的员工,公司和同事都给了我极大的认可,工作上也常常被委以重任。但现在这一切都成了过去,在新的公司我只是一个新人,没有人知道也没有人在意我过去的成绩。我决定重新开始,我把自己看作新毕业的学生,我要用自己的努力得到公司的认可。进入新的行业是非常痛苦的,我告诉自己必须忍受这一切,虽然外面有很多诱惑,但是既然作出了选择我就不允许自己轻易放弃。

我现在已经在这家新公司上了一个多月的班,开始非常艰难,现在慢慢适应了。第一个月结束时,Team Leader找我谈话,说我是新进员工中最优秀的一个,我心里很欣慰,这也算对我努力的一个肯定吧。在这里还要感谢我的女朋友,她给了我很大的支持和鼓舞,每次在我动摇的时候她都在鼓励我,让我坚持自己的理想,刚来上海是她让我不要勉强去做MIS,这次也是她让我顶住了月薪过万的诱惑,没有她我可能不会有今天的成绩。

现在的公司有自己的操作系统,自己的CPU、DSP和其它芯片,在这里我能学到世界上最先进的技术,我们的设计开发不再完全依赖别人的硬件和系统,这让我很开心。我打算等工作步入正轨后,全力学习新的知识,实现我的理想。

在后面的两年里我给自己定下了几个目标:

一.努力做好本职工作,在工作上得到公司和同事们的认同;

二.努力学习IC硬件设计知识,多向同事请教,并利用一切机会多实践;

三.实现我的实时操作系统的主要部分,完成TCP/IP协议栈模块,并免费发布源代码;

四.和我女朋友结婚并买一套小房子,这是最重要的,因为我明白事业是可以重来的,但是珍贵的感情很难失而复得。



在这里提一下我现在开发的操作系统,它是一个实时嵌入式系统,目前支持以下特性:

a.支持时间片轮转调度和基于优先级调度,最多64个优先级;

b.抢占式实时内核;

c.为了便于移植,主体用标准C实现;

d.汇编代码非常少,不到100行;

e.支持任务管理,各任务有独立的堆栈;

f.进程同步和通信目前完成了Semaphore,Message Queue正在调试;

g.实现了定时系统调用;

h.可以在windows上仿真调试

我还打算下一步实现优先级反转保护,Event Flag,Data Pipe,内存管理(以前实现过)、驱动接口等。
expert2000 2004-07-06
  • 打赏
  • 举报
回复
有必要这么麻烦用到函数指针吗?分成几个函数写不是也很好么?
jijinxu 2004-07-06
  • 打赏
  • 举报
回复
函数指针,是个指针(它指向一个函数)
指针函数,是个函数(它返回一个指针)
这个区别不是很明显吗?
ehhl 2004-07-06
  • 打赏
  • 举报
回复
那么下面这个呢?
static int ( * const pfn[] )( char* ) =
{
fun1,
fun2,
fun3,
fun4
};
ehhl 2004-07-06
  • 打赏
  • 举报
回复
int(*func(void))(int,int),一个普通的函数,形参为int,int,返回值的类型是一个函数指针。这个函数指针指向的函数类型是:返回值int,参数void,靠,说不清
heidongstar 2004-07-06
  • 打赏
  • 举报
回复
看懂了下面的就能理解函数指针和指针函数的区别了:

int (*func(void))(int,int);
oliver88888888 2004-07-06
  • 打赏
  • 举报
回复
int (*pf)();
pf就是函数指针。
表示pf是一个指向函数入口的指针变量,该函数的返回值(函数值)是整型。
下面通过例子来说明用指针形式实现对函数调用的方法。
int max(int a,int b){
if(a>b)return a;
else return b;
}
main(){
int max(int a,int b);
int(*pmax)();
int x,y,z;
pmax=max;
printf("input two numbers:\n");
scanf("%d%d",&x,&y);
z=(*pmax)(x,y);
printf("maxmum=%d",z);
}
talentyang 2004-07-02
  • 打赏
  • 举报
回复
指针函数是指指针型函数,返回值是指针.
qingdaolitao 2004-07-02
  • 打赏
  • 举报
回复
up
sttony 2004-07-02
  • 打赏
  • 举报
回复
指针返回的函数?
指针如何返回函数,只能是函数返回指针吧
CsdnRob 2004-07-02
  • 打赏
  • 举报
回复
指针函数?-----〉是指 指针返回的函数!!
csdn2010 2004-06-21
  • 打赏
  • 举报
回复
指针函数?-----〉是指 指针返回的函数!!
qwertasdfg123 2004-06-21
  • 打赏
  • 举报
回复
指针函数?
benbebnmao 2004-06-20
  • 打赏
  • 举报
回复
呵呵,没编译。
是应该int(*pmax)(int,int);
kaphoon 2004-06-20
  • 打赏
  • 举报
回复
#include <stdio.h>

void fun1(int i)
{
printf("hello fun1 %d\n",i);
}
void fun2(int i)
{
printf("world fun2 %d\n",i);
}

void fun(void(*function)(int),int i)//通常函数指针作为参数的
{
function(i);

}
int main()
{
fun(fun1,3);
fun(fun2,3);
}
kaphoon 2004-06-20
  • 打赏
  • 举报
回复
2010年恐怕没有csdn落,那时我可能不写代码落
Dong 2004-06-20
  • 打赏
  • 举报
回复
to benbebnmao(苯笨猫)
你用的是什么编译器??
int(*pmax)();是否要改为int(*pmax)(int,int);??
sttony 2004-06-20
  • 打赏
  • 举报
回复
不明白什么是指针函数
benbebnmao 2004-06-20
  • 打赏
  • 举报
回复
int (*pf)();
pf就是函数指针。
表示pf是一个指向函数入口的指针变量,该函数的返回值(函数值)是整型。
下面通过例子来说明用指针形式实现对函数调用的方法。
int max(int a,int b){
if(a>b)return a;
else return b;
}
main(){
int max(int a,int b);
int(*pmax)();
int x,y,z;
pmax=max;
printf("input two numbers:\n");
scanf("%d%d",&x,&y);
z=(*pmax)(x,y);
printf("maxmum=%d",z);
}

问题是什么叫指针函数?
int *fun()
你是说的这东西?更简单了。fun的返回直是指向整型的指针。
csdn2010 2004-06-20
  • 打赏
  • 举报
回复
大家
帮忙啊
!急不可待
!!!!!

69,373

社区成员

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

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