C语言关于指针函数与函数指针个人理解

1,函数指针

  顾名思义,即指向函数的指针,功能与其他指针相同,该指针变量保存的是所指向函数的地址。

假如是void类型函数指针定义方式可以是 void (*f)(参数列表);亦可以先用 typedef void (*F)(参数列表),

F f.但要注意函数指针的类型要与函数类型相同.

  下面举个简单的例子

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 typedef void (*F)();    
 4 
 5 void print_hello()          //简单定义一个无参数的打印函数
 6 {
 7     printf("hello ~\n");
 8 }
 9 
10 void main()
11 {
12     F f1;                //此处相当于 void (*f1)();
13     void (*f2)();
14 
15     f1 = print_hello;
16     f2 = print_hello;
17 
18     f1();
19     f2();
20 
21     system("pause");
22 }
View Code

2,指针函数

  指针函数即返回值为指针的函数。例如 int *a()、char *b()...分别代表返回值为整形指针,字符型指针的函数。

  下面举个简单的例子

#include<stdio.h>
#include<stdlib.h>

char *str()            //定义一个返回值为字符指针的函数
{
    char *a = "hello world ~";
    return a;
}

void main()
{
    char *c = str();  //可以在定义的时候同时赋值
    char *b;        //也可以先定义,后赋值
    b = str();

    printf("%s\n%s\n",c,b);

    system("pause");
}
View Code

 

posted @ 2017-04-08 20:13  吴智枫  阅读(390)  评论(2编辑  收藏  举报