Sian 发表于 2014-3-6 09:57:48

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

/*
返回指针的函数 与 指向函数的指针
1、返回指针的函数:这是一个函数,函数的返回类型不是基本数据类型,而是一个指针类型,返回的是一个地址;
2、接收返回值的变量必须是一个指针类型的变量,实际意义在于让指针变量指向这个返回值;
3、指向函数的指针:这是一个指针,这个指针指向的地址是一个函数,与函数性质(是否有返回值或形参等)无关;
4、函数指针格式:返回类型 (*变量名) (形参1, 形参2, ...)并且一一对应;
5、如void (*p)( ) 能且只能指向一个无返回值,且无形参的函数;int (*p)(int a, int b)能且只能指向一个返回值为int,带两个int形参的函数;
*/
#include <stdio.h>
#include <stdlib.h>
char *test();// 函数声明
void test2();// 函数声明

int main() {
   
    char *str = "abcdef";// 定义一个指针,并将指针指向一个字符串;
   
    str = test();// 修改指针的值,将函数的返回值赋值给指针str;注意:这里不是修改字符串"abcdef",而是将原本指向"abcdef“的指针指向了其他的字符串;
   
    printf("str = %s\n", str);// 打印指针str所指向的内容;
   
    void (*p)() = test2;// 定义指向函数(无返回无形参)类型的指针p;
   
    //test2();// 函数调用方式一:直接调用;
   
    //p();// 函数调用方式二:使用指针调用;
   
    (*p)();//函数调用试三:指针调用;
   
    system("pause");
   
    return 0;
   
    }
   
   
char *test() { // 返回指针类型的函数
   
   return "yusian";// 返回值为字符串,因此使用指针做为返回类型;
   
   }

void test2() {// 普通无返回值的函数 ;
   
   printf("Function is called !\n");// 函数功能只打印一句话证明被调用;
   
   }
运行结果:str = yusian
Function is called !
请按任意键继续. . .


页: [1]
查看完整版本: 【返回指针的函数】与【指向函数的指针】