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进制转换为十进制:按权 ...
随机推荐
- List与数组的相互转换
1.从string[]转List<string> string[] str={“1”,”2”}; List <string> list=new List<string&g ...
- GBDT 简述
GBDT 全称 Gradient Boosting Decision Tree,梯度提升决策树. 梯度增强决策树的思想来源于两个地方,首先是增强算法(Boosting),然后是梯度增强(Gradien ...
- Python中通过csv的writerow输出的内容有多余的空行
第一种方法 如下生成的csv文件会有多个空行 import csv #python2可以用file替代open with open("test.csv","w" ...
- selenium-chrome-headless
#coding=utf-8 from selenium import webdriver import time chrome_options = webdriver.ChromeOptions() ...
- [原][osg][粒子特效]spark粒子特效生成流程
- FASTQ 数据质量统计工具
主流工具: FastQC fqcheck readfq 拿到测序数据的第一步就是做质量控制 fqcheck之后得到的结果: 它会统计每条reads,按read 1-100位点计算每个位置的ACGTN含 ...
- 测序中Q20 Q30 Q40
你能给别人讲清楚这个概念吗? 二代测序中,每测一个碱基会给出一个相应的质量值,这个质量值是衡量测序准确度的.碱基的质量值13,错误率为5%,20的错误率为1%,30的错误率为0.1%.行业中Q20与Q ...
- IIS Web 服务器/ASP.NET 运行原理基本知识概念整理
前言: 记录 IIS 相关的笔记还是从公司笔试考核题开始的,问 Application Pool 与 AppDomain 的区别? 促使我对进程池进了知识的学习,所以记录一下学习 ...
- java 判断字符串IP合法性以及获取IP的数值形式
/** * 计算传入的IP地址的数字IP*/ public static long getIpNum(String ip) { long ipNum = 0; if (StringUtils.isNo ...
- Java容器——Set接口
1.定义 set中不允许放入重复的元素(元素相同时只取一个).它使用equals()方法进行比较,如果返回true,两个对象的HashCode值也应该相等. 2.方法 TreeSet中常用的方法: b ...