年年有"余"

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2130|回复: 0

【返回指针的函数】与【指向函数的指针】

[复制链接]
  • TA的每日心情
    奋斗
    2022-12-13 21:26
  • 签到天数: 371 天

    [LV.9]以坛为家II

    发表于 2014-3-6 09:57:48 | 显示全部楼层 |阅读模式
    1. /*
    2. 返回指针的函数 与 指向函数的指针
    3. 1、返回指针的函数:这是一个函数,函数的返回类型不是基本数据类型,而是一个指针类型,返回的是一个地址;
    4. 2、接收返回值的变量必须是一个指针类型的变量,实际意义在于让指针变量指向这个返回值;
    5. 3、指向函数的指针:这是一个指针,这个指针指向的地址是一个函数,与函数性质(是否有返回值或形参等)无关;
    6. 4、函数指针格式:返回类型 (*变量名) (形参1, 形参2, ...)并且一一对应;
    7. 5、如void (*p)( ) 能且只能指向一个无返回值,且无形参的函数;int (*p)(int a, int b)能且只能指向一个返回值为int,带两个int形参的函数;
    8. */
    9. #include <stdio.h>
    10. #include <stdlib.h>
    11. char *test();  // 函数声明
    12. void test2();  // 函数声明
    13. int main() {
    14.    
    15.     char *str = "abcdef";  // 定义一个指针,并将指针指向一个字符串;
    16.    
    17.     str = test();  // 修改指针的值,将函数的返回值赋值给指针str;注意:这里不是修改字符串"abcdef",而是将原本指向"abcdef“的指针指向了其他的字符串;
    18.    
    19.     printf("str = %s\n", str);  // 打印指针str所指向的内容;
    20.    
    21.     void (*p)() = test2;  // 定义指向函数(无返回无形参)类型的指针p;
    22.    
    23.     //test2();  // 函数调用方式一:直接调用;
    24.    
    25.     //p();  // 函数调用方式二:使用指针调用;
    26.    
    27.     (*p)();  //  函数调用试三:指针调用;
    28.    
    29.     system("pause");
    30.    
    31.     return 0;
    32.    
    33.     }
    34.    
    35.    
    36. char *test() { // 返回指针类型的函数
    37.      
    38.      return "yusian";  // 返回值为字符串,因此使用指针做为返回类型;
    39.      
    40.      }
    41. void test2() {  // 普通无返回值的函数 ;
    42.      
    43.      printf("Function is called !\n");  // 函数功能只打印一句话证明被调用;
    44.      
    45.      }
    复制代码
    运行结果:
    1. str = yusian
    2. Function is called !
    3. 请按任意键继续. . .
    复制代码


    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|Archiver|iOS开发笔记 ( 湘ICP备14010846号 )

    GMT+8, 2024-4-30 00:30 , Processed in 0.048291 second(s), 23 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表