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

Posted 再拟红笺递薛涛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于C语言关于指针函数与函数指针个人理解的主要内容,如果未能解决你的问题,请参考以下文章

C语言之深入解析如何理解指针和结构体指针指针函数函数指针

关于JAVA调用C的DLL库中的函数问题,传入一个含有指针的结构体指针

关于C语言结构体指针做函数形参的问题

关于如何理解和运用C语言的指针,我有话说(以C++内的纯C风格解题代讲)

C语言函数指针之回调函数

一个关于C语言的指针与二维数组的问题