C基础--函数指针

#include <stdio.h>

/*声明一个函数,函数名称的本质就是一个函数指针*/
int funcA(int a, int b)
{
    int c = a + b;
    printf("a = %d, b = %d \n", a, b);
    return c;
}

/*声明一个函数指针*/
/*注意,函数指针的类型要与其指向的函数原型相吻合*/
int (*p_funcA)(int, int);

int(*p_funcB)(int a);

int main(int argc, char** argv)
{
    funcA(3, 9);
    p_funcA = funcA; /*给函数指针赋值*/
    p_funcA(3, 9);  /*通过函数指针调用函数*/

    p_funcB = funcA;  /*类型不匹配,将会引发运行时错误*/

    /*以下写法全都是错误的!*/
    p_funcA = funcA(a, b);
    p_funcA = funcA(int, int);
    p_funcA = funcA(3,7);

    system("pause");
    return 0;
}
时间: 2024-10-12 08:04:54

C基础--函数指针的相关文章

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

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

C基础--函数指针作为函数的参数

#include <stdio.h> int add(int a, int b) { printf("%d\t%d\n", a, b); return a+b; } char max_ch(char *str) { int max, i; max = 0; for (i = 0; str[i] != '\0'; i++) if (str[i] > str[max]) max = i; return str[max]; } int main1(void) { int r

第八天: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++ 基础 11】 函数指针总结

在家学习的效率真是惨不忍睹.. =========================== 1 指针函数 int* f(int a, int b); 返回一个指向int类型的指针. 2 函数指针 2.1 声明 返回类型 (*函数名)(参数列表); 2.2 示例 int max(int a, int b) { return a > b ? a : b; } int min(int a, int b) { return a < b ? a : b; } int (*f)(int, int); // 声

你必须知道的指针基础-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

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,i

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){