day11基础代码——函数指针

//

//  main.m

//  Demo11

//

//  Created by scjy on 15/10/29.

//  Copyright © 2015年 lizhipeng. All rights reserved.

//

#import <Foundation/Foundation.h>

//typedef int (*MAXV)(int ,int );//形参名可以省略

typedef int (*MAXV)(int x,int y);//相当于把int (*)(int x,int y)定义成了MAXV

int maxValue(int x,int y){

return x > y ? x :y;

}

int sum(int x,int y) {

return x + y;

}

int mult(int x,int y) {

return x * y;

}

char printfhello(char str){

return str;

}

void printhello0(char str){

printf("%c\n",str);

}

void printhello(char *str){

printf("大家好,我叫%s\n",str);

}

typedef int (*SUN)(char *a ,char *b);

int sun(char *a,char *b){

int str = strcmp(a,b);

return str;

}

int getValue(int x,int y,MAXV P){

return P(x,y);

}

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

@autoreleasepool {

//*************** 第十一讲 函数指针*********************//

//函数指针定义 函数是存在代码区,也是有内存地址的。

//函数声明 函数定义 函数调用

printf("%d\n",sum(123, 456));

printf("%p\n",&sum);

//函数指针定义: int(*)(int x ,int y)= null 指针定义

//数据类型 (*指针变量名)(形式参数列表) 初值null

//        char stra = ‘h‘;

//        char *strb =&stra;

printf("这是一个字符:%c\n",printfhello(‘h‘));

//定义一个可以指向上述函数的函数指针,并通过函数指针实现调用该函数。

//函数 指针 字符串

printhello0(‘h‘);

//        char str0[6] = "hello";

//        char *str =str0;

printhello("hello");

//        void (*p1)(char *str) = NULL;

//        p1 = printhello;

//        p1("hello");

int (*p) (int x,int y) = NULL;

p = sum;

printf("%d\n",p(7,9));

//函数指针重指向

p = mult;

printf("%d\n",p(5,12));

//        int (*p3)(int x,int y) = NULL;

//        p3 = maxValue;

//        printf("%d\n",p3(6,5));

MAXV p3 = maxValue;

printf("%d\n",p3(60,5));

//        char str4[6] = "he";

//        char str5[6] = "llo";

//        char *strr1 = str4;

//        char *strr2 = str5;

SUN p4 = sun;

printf("---===%d\n",p4("he","llo"));

//给函数指针赋值的 函数,应该和函数指针定义的函数原型 保持一致。

//定义两个 函数 ,一个求 最大值,一个 求和,输入maxValue或sum分别求3,5的最大值或和

//(提示,定义一个 函数指针 ,根据输入内容指向不同函数,最后一次调用完成)。

//        MAXV p5 = NULL;

//        char let[10];

//        printf("输入maxValue或sum:\n");

//        scanf("%s",let);

//        if (strcmp(let, "maxValue") == 0) {

//            p5 = maxValue;

//        } else if (strcmp(let, "sum") == 0) {

//            p5 = sum;

//        } else {

//            printf("null....\n");

////            return 0;

//        }

//        if (p5 != NULL) {

//            printf("%d\n",p5(60,5));

//        }

////        printf("%d\n",p5(60,5));

//回调函数callback

MAXV p6 = NULL;

p6 = mult;

//        int h = getValue(3, 5, p6);

printf("%d\n",getValue(3, 5, p6));

MAXV p7 = sum;

printf("%d\n",p7(7,9));

printf("%d\n",getValue(6, 6, p7));

printf("%d\n",getValue(6, 6, mult));

printf("%d\n",getValue(6, 6, maxValue));

//动态排序

//        //2.

//        int (*p)(int x, int y);

//        p = sum;

//        int y = p(7, 9);

//        printf("y = %d\n", y);

//        //3.

//        int (*p)(int x, int y) = sum;

//        int y = p(7, 9);

//        printf("y = %d\n", y);

//        //4.

//        int (*p)(int, int) = NULL;

//        p = sum;

//        int y = p(7, 9);

//        printf("y = %d\n", y);

}

return 0;

}

时间: 2024-10-24 22:44:42

day11基础代码——函数指针的相关文章

C语言基础_函数指针

一.函数  实现某特定功能的代码 1)函数名与数组名一样是地址 2)函数指针 指向函数的指针 可以通过函数指针调用指向的函数 3)返回值类型 (*函数指针名)(参数类型)  = 函数名 int maxValue(int a,int b){ return a > b ? a : b; } int (*p)(int,int) = maxvalwe; printf("%d\n",p(3,4)); //用指针去调用函数 4) 示例代码 int maxValue(int a,int b){

iOS开发之c语言基础Lesson-11 函数指针 上课笔记 与 试题练习

main.m 文件 9 #import <Foundation/Foundation.h> 10 #import "Pointer.h" 11 ////////////////Lesson 11 函数指针 课堂笔记 与 习题练习//////////// 12 13 14 //函数指针:指向函数的指针叫做函数指针,用来存储函数的地址 15 //函数名代表函数的入口地址 16 17 18 //回调函数; 函数指针变量,存储对应的函数的地址 19 //给函数指针类型,取一个新的名

C++学习基础十七-- 函数指针

C++常用的函数指针 语法:返回值类型 (*函数名)(参数列表); 举例说明:int (*Func)(int m, int n); 用typedef简化函数指针的定义 例如: 1 typedef int (*Func)(int m, int n); 函数指针的初始化和赋值 1 // 1. 先声明对应函数指针类型的函数 2 int max(int num1, int num2) 3 { 4 return num1 > num2 ? num1 : num2; 5 } 6 7 //2. 初始化 8 F

第八天:C基础之内存分配与函数指针

虚拟内存自上而下分为 堆栈段,数据段,代码段 , 堆栈段分为堆区和栈区 ,栈区从上往下分配内存,堆区从下往上分配内存 .数据段分为静态区和全局区.两者的作用域不同.代码段分为只读区和代码区 .最后还有bss区现在还不涉及. 六个区域的定义如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int number = 200; 5 6 int hello() 7 { 8 static int s = 400; 9 int n = 100

小猪猪C++笔记基础篇(六)参数传递、函数重载、函数指针、调试帮助

小猪猪C++笔记基础篇(六) ————参数传递.函数重载.函数指针.调试帮助 关键词:参数传递.函数重载.函数指针.调试帮助 因为一些事情以及自己的懒惰,大概有一个星期没有继续读书了,已经不行了,赶紧写一篇压压惊.把我文章抱走的同学留个言嘛. 函数在变成里面是一个非常重要的组成部分,那么这一部分我们先简单的介绍一下参数是如何传递进入函数,函数如何返回结果的.然后我们再来看看函数重载是个什么样的机制,最后在介绍一下所谓的函数指针到底是个什么东西.那么直接开始正题吧: 一.函数的参数传递 我们知道函

C语言基础知识----指针数组 &amp;&amp; 数组指针 &amp;&amp; 函数指针 &amp;&amp;指针函数

指针数组 && 数组指针 char (*ptr)[5]; //定义一个指向数组指针ptr,指向包含5个char类型的数组 char *a[5]; //定义一个指针数组a,包含5个char*类型指针 #include <stdio.h> int main(void) {     char *a[5]={"red","white","blue","dark","green"};   

C基础--函数指针的使用

之前在看代码的时候,看了函数指针的使用,大体分为如下几类: 做一个function list,通过指针索引调用,使得处理功能类似的函数看起来更加清晰: 函数指针作为另一个函数的参数,用作回调: linux中经常使用来达到相同接口,实现不同,如: 1 struct platform_driver { 2 int (*probe)(struct platform_device *); 3 int (*remove)(struct platform_device *); 4 void (*shutdo

你必须知道的指针基础-7.void指针与函数指针

一.不能动的“地址”—void指针 1.1 void指针初探 void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据.和用int表示指针异曲同工,只是更明确是“指针”. 因此void*只能表示一个地址,不能用来&取值,也不能++--移动指针,因此不知道多少字节是一个数据单位. int nums[] = {3,5,6,7,9}; void* ptr1 = nums; //int i = *ptr1; // 对于void指针没法直接取值 int* ptr2 = (i

代码案例(结构体,函数指针,指针函数,冒泡排序) 修改

#import <Foundation/Foundation.h> typedef struct {     char name[20];     int age;     float score; }Stu; //建立字符串和函数之间的一一对应关系. typedef BOOL (*PStu) (Stu stu1,Stu stu2) ; typedef struct nameFunctionPair{     char name[20]; //存储函数对应的字符串     PStu funct