美文网首页
指针函数和函数指针

指针函数和函数指针

作者: lxr_ | 来源:发表于2021-10-10 11:35 被阅读0次
//指针函数int *p():返回值为指针类型的函数,不要返回局部变量的指针,因为其作用域仅限于函数内
//函数指针int (*p)():
#include <stdio.h>

//***********指针函数*****************
char* getWord(char c)
{
    char str1[] = "apple"; 
    char str2[] = "banana";
    switch (c)
    {
    case 'A':return "Apple";  //而此字符串存储于常量区
    case 'a':return str1;     //若运行此语句,出错,不能返回局部变量地址
    case 'B':return "Banana";
    case 'b':return str2;     //出错,不能返回局部变量地址
    case 'C':return "Cat";
    default:return "None";
    }
}

//**************函数指针********************
int square(int num)
{
    return num * num;
}

//**************函数指针作为参数********************
int add(int num1, int num2)
{
    return num1 + num2;
}
int sub(int num1, int num2)
{
    return num1 - num2;
}
int calc(int (*fp)(int , int),int num1,int num2)
{
    return (*fp)(num1, num2);
}

//************函数指针作为返回值**************
int (*select(char op))(int, int)   //先select(char)是一个函数,再加*返回整形并带有两个参数(int,int)的函数指针
{
    switch (op)
    {
    case '+':return add;
    case '-':return sub;
    default:
        break;
    }
}

int main(int argc, char** argv)
{
    //*************指针函数**************
    char input;
    
    printf("请输入一个字母:");
    scanf_s("%c", &input,1);  //与scanf一样的功能,此函数更安全,表示最多读取一个字符,防止内存访问越界

    printf("%s\n", getWord(input));

    //*************函数指针***************
    //不直接调用,而通过函数指针引用square,然后通过函数指针调用square
    int num;
    int (*fp)(int);    //定义函数指针fp,指向的函数类型为int
    printf("请输入与一个数字:");
    scanf_s("%d", &num);

    fp = square;       //函数名其实就表示地址
    printf("%d*%d=%d\n", num, num, (*fp)(num));
    //printf("%d*%d=%d\n", num, num, fp(num));  //这样也可以,但不建议,fp容易被认为是函数

    //************函数指针作为参数************
    printf("3+5=%d\n", calc(add, 3, 5));  //3+5=8
    printf("3-5=%d\n", calc(sub, 3, 5));  //3-5=-2

    //************函数指针作为返回值**************
    int num1, num2;
    char op;
    int (*fpp)(int, int);

    printf("请输入一个式子(如1+3):");
    scanf("%d%c%d", &num1, &op, &num2); //visual studio使用scanf时报错的话可采取如下解决办法:https://jingyan.baidu.com/article/49711c616b8a1ffa441b7cdc.html

    fpp = select(op);
    printf("%d %c %d = %d\n", num1, op, num2, calc(fpp, num1, num2));


    return 0;
}

相关文章

  • C:函数指针的坑

    关于该死的函数指针和指针函数 先来个目录 常量指针、指针常量 数组指针、指针数组 函数指针、指针函数 1、先看第一...

  • C++:函数指针 & 返回函数指针的函数

    函数指针 & 返回函数指针的函数 一、函数指针的声明和使用 声明一个函数指针,给它赋值并调用它指向的函数 函数指针...

  • 指针函数,函数指针,和位运算

    1.函数指针和指针函数的区别 函数指针是指向函数的指针变量,即本质是一个指针变量 指针函数可用于将一个函数作为参数...

  • 函数和指针

    函数指针: 指向函数的指针(是指针)指针函数:返回值是指针的函数(是函数)

  • C++ 函数指针和函数类型

    函数指针和函数类型 函数指针指向的是函数而非对象。和其他指针类型一样,函数指针指向某种特定类型。 函数类型由它的返...

  • 将函数名作为参数被另外一个函数调用

    函数名作为参数,需要使用函数指针,下面就来看一下什么是函数指针 什么是函数指针 函数指针和指针、数组指针是一个系列...

  • 函数指针和指针函数

    函数指针 概念:函数指针,顾名思义是一个指针变量,指向一个函数。代码: 1、定义:void(* fun_p)(ch...

  • 指针函数和函数指针

    指针函数 指针函数是指带指针的函数,即本质是一个函数,函数返回类型是某一类型的指针。int *f(x,y); 函数...

  • 指针函数和函数指针

    指针函数 当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中。 ...

  • 指针函数和函数指针

    1、指针函数 指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针。声明格式如下: 类型标识符...

网友评论

      本文标题:指针函数和函数指针

      本文链接:https://www.haomeiwen.com/subject/usyqoltx.html