深入理解指针函数2

#include <stdio.h>
int func3(int i)
{
     return i;
}
int(*ff(int i))(int x)
{   printf("%d\n", i);
    return func3;
}
int main()
{   printf("%d\n",ff(2)(3));
     return 0;
}
申明一个函数指针,并且该函数的返回值也是一个函数指针
转自:http://www.cnblogs.com/super119/archive/2011/03/26/1996145.html
func是一个函数指针,该函数返回值是int,没有输入参数;然后主程序中声明了一个函数指针myFuncPointer,
该函数指针代表的 函 数输入参数是一个int,返回值也是一个函数指针,类型就是func类型的。
所以我们可以把func2这个函数赋给myFuncPointer这个指针。 interview的题目要的就是myFuncPointer这个指针的声明。
*/
#include <stdio.h>

typedef int (*func)();  //申明返回值为int,无参的函数指针

   int func3()
    {
        printf("In function 3......\n");
        return 0;
    }

    //返回值为func的函数指针
    func func2(int a)
    {
        printf("input parameter is: %d\n", a);
        return func3;
    }

    int main()
    {
    //定义一个返回值为func,有一个int类型参数的函数指针
    //这里就是将函数func2的地址赋给myFuncpointer
        func (*myFuncPointer)(int) = func2;
        //定义一个返回值为func类型的变量,并对其赋初值
        func returnvalue = myFuncPointer(1111);
        //定义一个返回值类型为int型的变量
        int func3_return = returnvalue();
        printf("Func3 return value is: %d\n", func3_return);
        return 0;
    }

 
时间: 2024-10-12 04:17:14

深入理解指针函数2的相关文章

深入理解 [指针函数] 、[函数指针]、[指针的指针]、[指向指针数组的指针]

指针函数 1.指针函数是指带指针的函数,即本质是一个函数.当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中. 函数返回类型是某一类型的指针: 格式: 类型标识符  *函数名(参数表) int *match(void *key_x,void *key_y); 解析:首先来说它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针

深入理解指针函数

文章来自http://blog.sina.com.cn/s/blog_5e8facd20100qn20.html 1.指针函数的定义 顾名思义,指针函数即返回指针的函数.其一般定义形式如下: 类型名 *函数名(函数参数表列); 其中,后缀运算符括号"()"表示这是一个函数,其前缀运算符星号"*"表示此函数为指针型函数,其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个"指向返回值为-的指针(地址),"类型名"表示函

分清函数指针和指针函数_

关于指针和数组斩不断理还乱的恩怨还真是说了不少,不过现在应该已经理清了.有了上一讲的基础,本讲的内容相对来说就比较容易理解了. 1.指向函数的指针(函数指针) 来分析这样一个声明,void (*f) ( ); 虽然()的优先级高于*,但由于有括号存在,首先执行的是解引用,所以f是一个指针:接下来执行( ),表明f指向一个函数,这个函数不返回任何值.现在得出结论:f是一个指向不接受参数且不返回任何值的函数的指针,简称函数指针(pointer to function). 对比一下int(*p) [1

深入理解指针—&gt;指针函数与函数指针的区别

一. 在学习过程中发现这"指针函数"与"函数指针"容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1.指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 类型标识符    *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量. 表示: f

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() //简

【转】 指针函数与函数指针的区别

一. 在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1.指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 类型标识符    *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量. 表示: float *fun();

函数指针与指针函数

一. 在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1.指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 类型标识符    *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量. 表示: float *fun();

C/C++心得-理解指针

上一篇笔者用那不是怎么好理解的逻辑介绍了内存和C中的基本数据类型,现在笔者再根据自己重新所学来说说C语言中的指针. 理解指针才能真正的算C语言入门.也许是我大学期间太关注前端UE,也许是当初开始学C语言的时候没怎么认真:直到毕业后的某一天我才“懂”指针,才算理解C语言的伟大.如果早点理解它,可能我毕业时就会选择一份不一样的工作.如果有初学C语言的同行对指针有困惑,希望我这浅薄的认识能帮助你. 1.简介 指针在原英文中为pointer,个人觉得翻译过来后针的含义不如指的含义好理解,pointer还

【C语言天天练(十一)】深入理解指针

引言:在C语言中,指针的地位是不言而喻的,要想很好的掌握C语言,掌握指针是必须的,这也是C语言不同于其他语言的地方. (一)指针的指针 例子: int i; int *pi;/*把pi初始化为指向变量i,pi = &i*/ int **ppi;/*把ppi初始化为指向变量pi,ppi = &pi*/ 初始化指针后,就可以使用它们了.例如i = 'a'; *pi = 'a'; **ppi = 'a';具有相同的效果. 在一条简单的对i赋值的语句可以完成的任务情况下,为什么还要使用更为复杂的涉