深入理解指针函数
来源:互联网 发布:数据连接池是什么 编辑:程序博客网 时间:2024/05/18 13:12
1.指针函数的定义
2. 用函数指针作为函数的返回值
我们用上面介绍的方法分析一下,ff首先与后面的“()”结合,即:
也就意味着,ff是一个函数。
这种写法确实让人非常难懂,以至于一些初学者产生误解,认为写出别人看不懂的代码才能显示自己水平高。而事实上恰好相反,能否写出通俗易懂的代码是衡量程序员是否优秀的标准。一般来说,用typedef关键字会使该声明更简单易懂。在前面我们已经见过:
也就是说,PF是一个函数指针“变量”。当使用typedef声明后,则PF就成为了一个函数指针“类型”,即:
这样就定义了返回值的类型。然后,再用PF作为返回值来声明函数:
程序清单 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
- 哈哈,谢谢周老师,先抢个沙发,哦也!~
周总,如果从界面设计中生成各种菜单入手讲解那个例子,是否具有实际意义?效果是否会更好呢?
非常感谢周老师对C语言的讲解,
让我对C语言理解得比原来要全面一点了。谢谢。- “顾名思义,指针函数即返回指针的函数。其一般定义形式如下:
类型名*函数名(函数参数表列);”
这个顾名思义有点意思,看定义形式应该就是一个函数指针,而这里要说的指针函数我倒是孤陋寡闻,好像没听过这么叫的。返回指针的函数??我感觉这里要说的就是函数指针,即指向函数的指针。 - 理解有错。。。这里没有用括号把“*”和函数括起来。。。不过这个*号跟函数靠得太近了。。。哎。。
周工,你好!
文章中出现这样两种格式:
26if (dbMax< dbData[i]) {
27dbMax=dbData[i];
28}
39for (i=0; i<iSize; i++)
40{
41dbSum+=dbData[i];
42}
我觉得一本书上应该只采用一种,不知道原版是不是也是这样(个人更喜欢ANSI格式)。- 您好:
周工,我是武汉一所大学毕业的专科生,专业是机电一体化,毕业2年,这2年从事机电设备电气安装与调试部分。但总觉得这样在基层打工会荒废我的青春时间,所以我毅然辞去了工作。在学校里面有学过8051单片机的选修课,所以现在在家里恶补单片机,c语言知识,说不定以后可以做嵌入式了。但认识到在家里自习效果根本不好,我想让周工帮我出出主意:一是找个一般工作,在家靠毅力学习,二还是找个嵌入式的培训机构并推荐就业了?期待您的答复
这整个程序看完了,这文章很好,无论是文字还是c程序的格式都非常讲究,多多学习!
switch (c)
55{
56case 'd':
57return GetMax;
58case 'x':
59return GetMin;
60case 'p':
61return GetAverage;
62default:
63return UnKnown;
64}
5759 61这三行后面为什么不用加break? - 因为执行一条语句就返回了,所以不用加了
- 九月枫树林
兄,引用周工的原话“不真正懂得指针函数和志向函数的指针,C语言就相当于没有入门,根本不可能编写结构话的、分层的C程序”
俺也是好多年前学的了,后来没咋用,现在也不咋懂了,主要是不懂怎么应用,所以再来学下。 - 指针函数真的很烦人啊。
- 指针的知识很难学,但是很重要,一定得学会!
- 学习下
- 学到东西了
- 转发微博。
- 转发微博。
- 哈哈,菜
- 这个相对于一般的函数调用,应该没有什么更进一步的优化吧,只不过结构更紧凑一些而已。
- 讲解的很好!
不得不顶!
另外
int(*ff(int))(int *, int);
要是能把这个函数返回的指针为什么是(int *)(int *, int)讲的更明白就好了。
因为就像你后来定义的,这样不如直接写成
(int*)(int *, int) ff(int)
这样一目了然可以看出来ff是个函数,带一个Int型参数,该函数返回一个函数指针,类型为(int*)(int *, int) - 笔误,
应该是
int(*)(int *, int)
按理说,这样也是一个类型啊(是一个函数指针类型,该函数返回Int,带两个参数),但是编译器不让通过啊!
老师能给讲讲吗?
由于前面还有一个int,也就是说,pfun是一个返回值为整型指针的函数。
这句话好像有错吧?应该说pfun是一个返回值是指针,并且该指针是指向整形变量的函数,而不是说返回值为整形指针
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 深入理解指针函数
- 寂静夜空中升起的烟花
- G729编解码
- 新的旅途
- 导师制
- Ubuntu下sudo -s后环境变量的设置
- 深入理解指针函数
- 在Ubuntu上建立Arm Linux 开发环境
- Find Slow Oracle SQL
- 彻底搞定C指针-函数名与函数指针
- Android系统分辨率修改方法
- NFS服务器配置
- Amoeba RC5用户手册-电子版PDF文档
- WebKit 内核源码分析 (一) Frame
- WebKit 内核源码分析 (二) FrameLoader