zoukankan      html  css  js  c++  java
  • C语言基础:C语言指针(7)

    前几节, 我们讲了指针对于数组, 字符串, 还有一些补充的知识, 现在我们来讲指针的最后一个应用, 那就是函数指针.


    下面我们来看一个小例子:

    #include <stdio.h>
    char *test();
    
    int main()
    {
        char *name = test();
        
        printf("name=%s
    ", name);
        
        return 0;
    }
    
    char *test()
    {
        return "rose";
    }



    这个例子的函数, 其实是返回char类型的函数指针, 然后在main函数里接收并且打印, 也就是相当于:

    char *name = "rose";

    PS:但是类型一定要能够兼容.


    下面我们再来看另一个小例子:

    #include <stdio.h>
    
    void test();
    
    int main()
    {
        // (*p)是固定的写法
        // 左边的void: 指针变量p指向的函数没有类型
        // 右边的(): 指针变量p指向的函数没有形参
        void (*p)();
        
        // 指针变量p指向了函数test
        p = test;
        
        // 有三种调用的方法
        p();
        //(*p)(); 利用指针间接调用函数
        //test(); 直接调用函数
        
        return 0;
    }
    
    
    void test()
    {
        printf("我调用了test函数
    ");
    }

    有些人会感到疑惑, 为什么函数也能用指针调用呢?

    答案其实很简单, 因为内存, 只要在程序里有地址的变量, 或者函数, 什么都可以, 只要你有地址, 指针就能指向该XXXX, 这样子解释应该不难理解, 所以在这个程序里, 是可以调用的.


    再来一个完整的小例子:

    #include <stdio.h>
    
    int test2(int a, int b)
    {
        int sum = a + b;
        printf("sum = %d
    ", sum);
        
        return sum;
    }
    
    int main()
    {
        int (*p)(int, int);
        
        p = test2;
        
        p(10, 20);
        
        return 0;
    }
    

    看完这个小例子之后, 大家对函数的指针应该更加的深刻认识了, 好了, 指针这一章就到这里结束了, 过后我会继续添加更多的C语言基础知识~~谢谢~~

  • 相关阅读:
    沙尘天气,但还是要坚持锻炼
    为了欧冠,堕落两天
    NRF24L01测试板子完成了
    昨天参加ti的研讨会了
    自我安慰一下
    功率W与dBm的对照表及关系
    短时间提高英语口语方法
    看了一个星期的欧洲杯,熬阿
    最近比较忙,项目较累
    后台获取js赋给服务器控件的值
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4282888.html
Copyright © 2011-2022 走看看