C语言基础:函数指针 分类: iOS学习 c语言基础 2015-06-10 21:55 15人阅读 评论(0) 收藏
#import <Foundation/Foundation.h>
//定义一个结构体,使用函数回调实现动态排序(年龄.姓名.分数)
typedef struct student{
char name[50];
int age;
float score;
}Student;
BOOL compareName(Student stu1,Student stu2); //声明
BOOL compareName(Student stu1,Student stu2){ //按姓名排序实现
return strcmp(stu1.name,
stu2.name);
}
BOOL compareAge(Student stu1,Student stu2);
//声明
BOOL compareAge(Student stu1,Student stu2){
//按年龄排序实现
return stu1.age>stu2.age?YES:NO;
}
BOOL compareScore(Student stu1,Student stu2);
//声明
BOOL compareScore(Student stu1,Student stu2){
//按分数排序实现
return stu1.score>stu2.score?YES:NO;
}
void bubbleArray(Student *a,int count,BOOL (*p)(Student,Student));
void bubbleArray(Student *a,int count,BOOL (*p)(Student,Student)){
//运行时函数,参数:一个指针变量,一个长度,一个函数指针
for (int i=0;
i<count-1; i++) {
for (int j=0;
j<count-1-i; j++) {
if (p(a[ j ],a[j+1]))
{ //由参数函数指针所指向的函数决定按什么类型排序
Student temp=a [ j ];
a[ j ]=a[j+1];
a[j+1]=temp;
}
}
}
for (int i=0;
i<count; i++) { //遍历
printf("%s
%d %.2f \n",a[ i ].name,a[ i ].age,a[
i ].score);
}
}
int main(int argc, const char *
argv[]) {
Student stuArray[ 5 ]={
//定义一个结构体数组
{"xijinping",98,80.0},
{"aobama",75,60.1},
{"benladeng",55,56.3},
{"pujing",58,88.6},
{"chengguan",63,98.0}
};
BOOL (*p)(Student,Student)=NULL;
//函数指针初始化
p=compareAge; //为函数指针赋值,指向的是函数compareAge的地址
// p=compareName;
// p=compareScore;
bubbleArray(stuArray, 5,
p); //调用函数
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
C语言基础:函数指针 分类: iOS学习 c语言基础 2015-06-10 21:55 15人阅读 评论(0) 收藏的更多相关文章
- Python调用C可执行程序(subprocess) 分类: python 服务器搭建 C/C++ shell 2015-04-13 21:03 87人阅读 评论(0) 收藏
从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spawn.os.popen.popen2.commands. ...
- 自定义view组件 分类: H1_ANDROID 2013-10-26 21:55 741人阅读 评论(0) 收藏
参考<疯狂android讲义>第2版 2.1节P48,对应CustomViewDemo.zip. 若在开发过程中,发现现有的view均不能满足需要,可以自定义一个view. 自定义一个vi ...
- C语言基础:函数(Function) 分类: iOS学习 c语言基础 2015-06-10 21:48 14人阅读 评论(0) 收藏
函数:一段具有某些特定功能的代码段. 使用函数的严格规定: 1.函数声明 2.函数定义 3.函数调用 函数声明:告知系统编译器该系统的函数名,函数参数,参数类型,参数个数,参数顺序等等,以便函数调用时 ...
- C语言基础:指针初级(补充) 分类: iOS学习 c语言基础 2015-06-10 21:54 19人阅读 评论(0) 收藏
结构体指针:指向结构体指针的变量的指针. 结构体指针指向结构体第一个成员变量的首地址 ->: 指向操作符 定义的指针变量必须指向结构体的首地址,才可以使用 -> 访问结构体成员变量 ...
- C语言基础:初级指针 分类: iOS学习 c语言基础 2015-06-10 21:50 30人阅读 评论(0) 收藏
指针:就是地址. & 取地址运算符 %p 打印地址占位符 int a=0; printf("%p ",&a); 指针变量:用来存放地址的变量 定义: ...
- C语言基础:内存 分类: iOS学习 c语言基础 2015-06-10 21:59 23人阅读 评论(0) 收藏
全局变量:定义在函数之外.(不安全) 局部变量;定义在函数之内. 内存的划分:1栈区 2堆区 3静态区(全局区) 4常量区 5代码区 栈区..静态区.常量区.代码区的数据都是由系统分配和释放 ...
- C语言基础:数组 分类: iOS学习 c语言基础 2015-06-10 21:40 7人阅读 评论(0) 收藏
数组:是由一组具有相同数据类型的数据组合而来. 数组定义:元素类型修饰符 数组名[数组个数]={元素1,元素2....}; int arr[ 2 ]={1,2}; //正确 int arr[ ...
- c语言基础:数据类型 分类: iOS学习 c语言基础 2015-06-10 21:43 9人阅读 评论(0) 收藏
C语言基本数据类型大体上分为: 整型 和 浮点型 字节: 计算机中最小的储存单位 1 Byte = 8 bit 整型: int 4 ...
- C语言基础:进制转换,变量,常量,表达式,基本数据类型,输出函数,输入函数,运算符. 分类: iOS学习 c语言基础 2015-06-10 21:39 25人阅读 评论(0) 收藏
二进制:以0b开头,只有0和1两种数字.如0101 十进制:0~9十个数字表示.如25 十六进制:以0~9,A~F表示,以0X开头.如0X2B 十进制转换为X进制:连除倒取余 X进制转换为十进制:按权 ...
随机推荐
- hdu 1796 How many integers can you find 容斥定理
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...
- 广州工业大学2016校赛 F 我是好人4 dfs+容斥
Problem F: 我是好人4 Description 众所周知,我是好人!所以不会出太难的题,题意很简单 给你n个数,问你1000000000(含1e9)以内有多少个正整数不是这n个数任意一个的倍 ...
- shell模拟ctrl c停止
kill命令可以带信号号码选项,也可以不带. 如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源. 也可以用kill向进程发送特定的信 ...
- Codeforces 847C - Sum of Nestings
847C - Sum of Nestings 思路:简单的递归. 代码: #include<bits/stdc++.h> using namespace std; #define ll l ...
- 20170609批量生成WORD合同
Sub NextSeven_CodeFrame() Application.ScreenUpdating = False Application.DisplayAlerts = False Appli ...
- 记录一个错误,在bundle install时候出现 shoulda-mathcers bundle install fails with git error
复制粘体错误到google.找到解决方案: https://github.com/thoughtbot/shoulda-matchers/issues/1057 GIT remote: https:/ ...
- Confluence 6 结构(Schema )设置
基本 DN(Base DN) 根专有名称(DN)将会在你在目录服务器上运行查询的时候使用到.例如: o=example,c=com cn=users,dc=ad,dc=example,dc=com 针 ...
- 字 字节 比特,以及各个算数类型所占用的大小范围 c++
字 储存的基本单元,. 1字=4/8字节 字节 byte 字节是计算机中数据处理的基本单元. 1byte=8bit 比特(bit/位) 表示二进制位,计算机内部数据储存的最小单位 例如 1011是一个 ...
- TCP文件发送
发送端(客户端) #include <iostream> #include <winsock2.h> #include <Ws2tcpip.h> #include ...
- HDU-3506 Monkey Party (环形石子合并)
题目大意:n堆石子围成一圈,每堆石子的块数已知,每次可以将相邻的两堆合并到一堆,块数变为两堆之和,代价也为两堆石子块数之和.求合并到一堆的最小代价. 题目分析:先通过将前n-1依次个移到第n个后面,将 ...