java 函数指针数组的值_C语言函数指针和指针函数

1、指针函数

指针函数,简单理解就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。声明格式如下:

*类型标识符 函数名(参数表)

例如,

int *myfun(int x,int y);

注意:在函数名前面多了一个*号,而这个函数就是一个指针函数。其返回值是一个 int 类型的指针。

指针函数的写法可以有以下几种:

int *fun(int x,int y);

int * fun(int x,int y);

int* fun(int x,int y);

*靠近返回值类型的写法更容易理解。

指针函数使用示例如下,#include

#include

#include

int *newAdd(int a, int b); // 声明指针函数

int main() {

int *p1 = NULL;

p1 = newAdd(1, 2);

printf("p1 = 0x%x \n", p1);

printf("*p1 = %d \n", *p1);

getchar();

return 0;

}

int *newAdd(int a, int b) {

int *p = (int *)malloc(sizeof(int));

memset(p, 0, sizeof(int));

printf(" 函数内:p = 0x%x \n", p);

*p = a + b;

printf(" 函数内:*p = %d \n", *p);

return p;

}

注意:在调用指针函数时,需要一个同类型的指针来接收其函数的返回值。

也可以将其返回值定义为 void*类型,调用时强制转换返回值为想要的类型。

2、函数指针

函数指针,其本质是一个指针变量,该指针指向这个函数。函数指针就是指向函数的指针。声明格式如下:

类型说明符 (*函数名) (参数)

例如,

int (*myfun)(int x,int y);

把一个函数的地址赋值给函数指针变量有两种写法:

myfun = &Function;

myfun = Function;

注意:&不是必需的,因为一个函数标识符就表示了它的地址。

调用函数指针的方式也有两种:

x = (*myfun)();

x = myfun();

函数指针使用示例如下,#include

int add(int x,int y){

return x+y;

}

int sub(int x,int y){

return x-y;

}

//函数指针

int (*myfun)(int x,int y);

int main(int argc, char *argv[])

{

//第一种写法

myfun = add;

printf("(*myfun)(1,2) = %d\n" , (*myfun)(1,2));

//第二种写法

myfun = ⊂

printf("(*myfun)(5,3) = %d\n" , myfun(5,3));

return 0;

}

3、函数指针和指针函数的区别

1)定义不同

指针函数本质是一个函数,其返回值为指针。

函数指针本质是一个指针,其指向一个函数。

2)写法不同

指针函数:int* fun(int x,int y);

函数指针:int (*fun)(int x,int y);

函数名带括号的就是函数指针,否则就是指针函数。

3)用法不同

一个是函数,一个是变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值