指针函数 与 函数指针

原创 2016年08月30日 11:02:18

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

指针函数:

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

static int data;
int *point_func(int x)
{
    data = x;
    printf("data's address is %x\n",&data);
    printf("data's vaule   is %d\n",data);
    return &data;  //返回一个指针(data地址)
}

int main()
{
   int *ptr;
   ptr = point_func(999);    //将(data地址)赋值给ptr
   printf("ptr's address is %x\n",ptr);
   printf("ptr's  data is %d\n",*ptr);
   return 0;
}

输出:
data’s address is 804a01c
data’s vaule is 999

ptr’s address is 804a01c
ptr’s data is 999

函数指针

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

//没有参数,没有返回值
void func1(void)
{
    printf("i am func1\n");
}
void func2(void)
{
    printf("i am func2\n");
}

//有参数,有返回值
int func3(int x)
{
    return (x*x);
}

//有参数,返回指针
static int data;
int *point_func(int x)
{
    data = x;
    return &data;
}

//对应的函数指针定义
void (*fptr1)();
void (*fptr2)();
int  (*fptr3)(int x);
int * (*fptr4)(int x);

int main()
{
    //两种函数指针赋值方式效果一样
    fptr1 = &func1;  
    fptr2 = func2;  //推荐

    (*fptr1)();     //无参数函数指针调用方式

    //两种函数指针调用方式效果相同
    (*fptr2)();     //推荐  
     fptr2();  

     int value = 10;
     int value2;
     fptr3 = func3;
     value2 = (*fptr3)(value); //有参数,有返回值的函数指针调用方式
     printf("value2 = %d\n",value2);

     fptr4 = point_func;
     int * ptr = (*fptr4)(value2);  //有参数,返回指针的函数指针调用方式
     printf("*ptr is %d\n",*ptr);
     printf("data is %d\n",data);

     return 0;
}

输出:
i am func1
i am func2
i am func2
value2 = 100
*ptr is 100
data is 100


版权声明:本文为博主原创文章,未经博主允许不得转载。

指针函数与函数指针--两个简单例子进行说明

一直都对两个概念有所混淆--指针函数与函数指针,下面我们通过两个例子来讲解一下 ------------------------------------------------------------...
  • u014131641
  • u014131641
  • 2016年04月09日 14:44
  • 2975

linux C编程(五)函数指针与函数调用

函数指针函数指针,首先是一个指针,只不过该指针指向的是函数,而不是变量。#include int max(int x,int y) { return (x>y)?x:y; } int main()...
  • u012177034
  • u012177034
  • 2016年08月25日 22:45
  • 1249

C#中的函数指针(转)

函数指针也叫指向函数的指针,它是为了提高函数的通用性而引入的。比较传统的方法是在函数中增加参数,通过增加的参数来判断到底要用什么函数,这样的缺点是灵活性差,为了支持多种方法要在函数中要写很多分支判断语...
  • dragoo1
  • dragoo1
  • 2016年11月05日 11:00
  • 2277

Go语言学习六:指针与传递到函数的指针

package main import ( "fmt" ) const MAX int = 3 func main() { var a int = 20 var ip *int /* 声明...
  • shawncheer
  • shawncheer
  • 2016年03月30日 20:23
  • 714

C/C++函数指针用法总结

C++函数指针 一函数指针介绍   函数指针指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关。举例如下: int add(int nLeft,int nRight);//...
  • u013507368
  • u013507368
  • 2014年12月02日 16:48
  • 687

函数指针和函数指针数组及其应用

1. 函数指针 先来看一个简单的例子。 int a=3; void *p=&a; 这是一个基础的不能再基础的例子。相信学过指针的都能看得懂。P是一个指针,指向a。a 是一个整形变量。 函数指针和其类似...
  • yuexiang321
  • yuexiang321
  • 2016年09月25日 11:07
  • 1877

函数指针的作用以及好处

//函数指针使用的例子#include #include char * fun(char * p1,char * p2) {   int i = 0;   i = strcmp(p1,p2);...
  • windyblankboy
  • windyblankboy
  • 2016年08月21日 00:44
  • 1868

函数指针,指针函数,返回值为指针的函数

在学习C语言时,一个比较容易混淆的概念就是函数指针、指针函数、返回值为指针的函数。本文将对这三个概念进行区分。指针函数就是返回值为指针的函数,两个本质上是同一事物,只是叫法不同。函数指针就是一个指向函...
  • wangxufa
  • wangxufa
  • 2017年06月08日 21:23
  • 627

js中神奇的函数指针

js中的函数指针是一个神奇的东西 定义function check(){};对于上面这个函数,check(函数名)就是函数指针,check指向函数主体,如果alert(ckeck),那么弹出的信...
  • l7945685
  • l7945685
  • 2016年08月15日 10:16
  • 1868

函数指针的好处、作用

C中函数指针的作用   项目中用到了很多封装在struct中的函数指针,以前在MFC里面经常用到则个作为回调函数,还以为是微软设计的特色呢。在网上查了一下它的用法,做个总结。   1)提供调...
  • wujiangguizhen
  • wujiangguizhen
  • 2013年12月06日 00:29
  • 11892
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:指针函数 与 函数指针
举报原因:
原因补充:

(最多只允许输入30个字)