C语言第十一天课堂笔记<详细+注释>

int main(int argc, const char * argv[]) {

//  函数指针: 就是指向函数的指针
//  函数的名字 是一个地址 是一个常量地址
//  int (*)(int num1,int num2) 是类型 p是函数指针名字 NULL 是初值
//  定义指针函数步骤:
//  1.把要指向的函数声明赋值过来 把函数名 删了
//  int sum(int num1,int num2);
//  int (int num1,int num2);
//  2.把原来函数名的位置 替换成(*)(此时该式子就是函数指针的类型)
//  int (*)(int num1,int num2);
//  3.给函数指针起一个名字
//  int (*函数指针的名字)(int num1,int num2);

//  注意: 函数指针 只能指向同类型的函数
//  但是定义函数指针的时候 参数的名字 可以省略

// int (*p)(int num1,int num2) = sum;
// sum(3, 4);
// p(3,4);

//int (*p1)(int num1,int num2);

//  无参数调用时 也要加括号'

// void (*p)() = printHello;
// p();
// 安全判断
// int (*p)(int num1,int num2) = NULL;
// char str[50] = {0};
// printf(“请输入你想执行的函数(sum 或者 max):\n”);
// // 千万别再在scanf中加一些占位符
// scanf(“%s”,str);
//
// if (strcmp(str,”sum”) == 0) {
// p = sum;
// printf(“%d\n”,p(3,5));
//
// }else if(strcmp(str, “max”) == 0)
// {
// p = max;
// printf(“%d\n”,p(3,5));
//
// }else
// {
// printf(“输入错误!”);
// }
// // 安全判断 当 p != NUll 才有返回值

//  回调函数

// printf(“%d\n”,getValue(3, 5, sum));

//  声明五个学生
Student stu1 = {"  lutaotao", 23, 68.9, 10003};
Student stu2 = {"  mazegong", 27, 78.9, 10006};
Student stu3 = {"matingting", 24, 88.9, 10009};
Student stu4 = {"    qiaodi", 22, 98.9, 10007};
Student stu5 = {"   liuhang", 20, 95.9, 10008};
Student stus[] = {stu1, stu2, stu3, stu4, stu5};

// sortByAge(&stus[0], 5);
// printf(“\n”);
// sortByNumber(stus, 5);
// printf(“\n”);
// sortBySocre(stus, 5);
// printf(“\n”);

//  函数指针

// SORT p = compareAge;
//
// sortStudent(stus, 5,p);
// sortStudent(stus, 5,compareNumber);
// sortStudent(stus, 5,compareScore);
// Good p = addStr;
// findStudentByScore(stus, 5, p);

//  最终版
while (1) {
    char str[100] = {0};
    printf("请输入age/score/number\n");
    scanf("%s",str);
    //  根据输入查找对应函数地址
    SORT p = getFunctionByName(str);

    //  安全判断
    if (p != NULL) {
        //  排序 根据返回的函数地址进行排序
        sortStudent(stus, 5, p);
    }else{
        printf("你傻爆了...\n");
    }

}

return 0;

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值