iOS学习之C语言函数指针
通过函数名调用函数:
int max = maxValue(4, 5);
printf("max = %d\n", max);
函数类型:int (int, int)
1.定义函数指针
int *p = NULL;
函数类型:int (int, int)
函数指针的类型:int (*)(int, int)
p是函数指针变量名
int (*p)(int, int) = NULL;
2.给函数指针赋值(使用函数首地址)
函数存放在代码区,函数名是函数存储空间的首地址
p = maxValue;
3.通过函数指针调用函数和通过函数名调用函数一样。
动态排序:
使用回调函数,提高代码的复用性,提高代码的可修改性(当需求有变化时,可以快速简单的修改)
Function.h
struct student {
]; // 姓名
int age; // 年龄
double score; // 成绩
int num; // 学号
};
typedef
// 打印所有学生的信息
void printArray(Student stuArray[], int count);
// 比较两个学生的年龄
BOOL compareStuAge(Student stu1, Student stu2);
// 比较两个学生的姓名
BOOL compareStuName(Student stu1, Student stu2);
// 比较两个学生的成绩
BOOL compareStuScore(Student stu1, Student stu2);
// 比价两个学生的学号
BOOL compareStuNum(Student stu1, Student stu2);
typedef BOOL (*FUNC)(Student, Student);
// 排序函数
void sortStudent(Student *stu, int count, FUNC p);
Function.m
// 比较两个学生的年龄
BOOL compareStuAge(Student stu1, Student stu2) {
return stu1.age > stu2.age;
}
// 比较两个学生的姓名
BOOL compareStuName(Student stu1, Student stu2) {
;
}
// 比较两个学生的成绩
BOOL compareStuScore(Student stu1, Student stu2) {
return stu1.score < stu2.score;
}
// 比价两个学生的学号
BOOL compareStuNum(Student stu1, Student stu2) {
return stu1.num > stu2.num;
}
// 排序函数
void sortStudent(Student *stu, int count, FUNC p) {
; i < count - ; i++) {
; j < count - - i; j++) {
])) {
Student temp = stu[j];
stu[j] = stu[j + ];
stu[j + ] = temp;
}
}
}
}
main.m
int main(int argc, const char * argv[]) {
Student stu1 = {, };
Student stu2 = {, , };
Student stu3 = {, -, };
Student stu4 = {, , };
Student stu5 = {, , };
Student stuArray[] = {stu1, stu2, stu3, stu4, stu5};
int count = sizeof(stuArray) / sizeof(Student);
// 动态排序
sortStudent(stuArray, count, compareStuNum);
printArray(stuArray, count);
sortStudent(stuArray, count, compareStuAge);
printArray(stuArray, count);
sortStudent(stuArray, count, compareStuName);
printArray(stuArray, count);
sortStudent(stuArray, count, compareStuScore);
printArray(stuArray, count);
iOS学习之C语言函数指针的更多相关文章
- IOS学习笔记07---C语言函数-printf函数
IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...
- IOS学习笔记06---C语言函数
IOS学习笔记06---C语言函数 -------------------------------------------- qq交流群:创梦技术交流群:251572072 ...
- iOS学习之C语言函数
一.函数的定义 返回值类型 函数名(参数类型 参数名, ...) { 功能语句; return 返回值; } 按照返回值和参数划分: 第一种: 无返回值 无参 void sayHello() { pr ...
- C#委托与C语言函数指针及函数指针数组
C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...
- C语言函数指针 和 OC-Block
C语言函数指针 和 OC-Block 一. C语言函数指针 关于函数指针的知识详细可参考:http://www.cnblogs.com/mjios/archive/2013/03/19/2967037 ...
- C语言函数指针基础
本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础.如果你不讨厌事无巨细,请尽情阅读吧. 函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具.本文将从C ...
- “对外部(局部)变量的访问”是C语言函数指针的最大弱点
1.“对外部(局部)变量的访问”是C语言函数指针的最大弱点 . #include <stdio.h> #include <stdlib.h> /* 结构体定义 */ struc ...
- iOS学习09C语言函数指针
本次主要学习和理解函数指针 1.函数指针 void printValue(int number) { printf("number = %d\n", number); } int ...
- c语言函数指针的理解与使用(学习)
1.函数指针的定义 顾名思义,函数指针就是函数的指针.它是一个指针,指向一个函数.看例子: 1 2 3 A) char * (*fun1)(char * p1,char * p2); B) char ...
随机推荐
- 洛谷P1518 两只塔姆沃斯牛 The Tamworth Two
P1518 两只塔姆沃斯牛 The Tamworth Two 109通过 184提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交 讨论 题解 最新讨论 求数据 题目背景 题目描 ...
- 洛谷P1613 跑路
P1613 跑路 176通过 539提交 题目提供者该用户不存在 标签倍增动态规划 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 这个题的数据.. 题意问题 表意 题目描述 小A的工作不仅繁 ...
- 华为OJ平台——DNA序列
题目描述: 一个DNA序列由A/C/G/T四个字母的排列组合组成.G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度).在基因工程中,这个比例非 ...
- CSS用border绘制三角形
使用border绘制三角形的思路,就是border尺寸设置一个较大的值,元素自身的宽高设置为0,全部由边线占据,这样每边就会显示为四分之一块的三角形.这样不借助图片,可以直接绘制出三角形了. 一个栗子 ...
- Android内存泄漏分析
周末去上海参加了安卓巴士组织的技术论坛,去了才发现自己基础很渣..... 其中提到了android的内存泄漏的问题,回来马上度娘(虽说度娘很渣),整理如下: 一.单例造成的内存泄漏 因为单例的静态特性 ...
- JavaCC首页、文档和下载 - 语法分析生成器 - 开源中国社区
JavaCC首页.文档和下载 - 语法分析生成器 - 开源中国社区
- 解决error C2011: 'fd_set' : 'struct' type redefinition的方法
http://www.cnblogs.com/ark-zhang/archive/2013/06/19/3144383.html 首先说明这个问题由于重复定义引起的编译错误. 先说明解决方法,然后 ...
- 模仿QQ空间 网页设计
目的:1.通过模仿QQ空间,全自主写代码,熟悉网页设计的流程 2.熟练的掌握HTML.CSS.JS的应用 3.将在此过程中遇到的问题及其解决方法记录在此,以便取用. 开始: 一.登陆界面(index. ...
- sql关联excel查询
select * from 表名 where 字段名 in (SELECT excel列名 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data S ...
- 怎样在Android中ListView与ArrayAdapter配合使用
[代码]main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xml ...