------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!-----指针函数与函数指针
一、指针函数
(1)定义:返回值为一个某一类型指针的函数称为指针函数。
(2)格式:类型说明符* 函数名(形参列表);*表示返回值为一个指针或地址。
(3)程序示例如下:
#include<stdio.h>
int* max(int x,inty)
{
return x>y?x:y;
}
int main(int argc,const char* argv[])
{
int a=3,b=4;
int *p=max(3,4);
printf("%p\n",p);
return 0;
}
该函数打印输出p的地址,该函数属于值传递。
二、函数指针
(1)定义:存放函数首地址的指针变量就是函数指针
(2)格式:类型说明符 (*变量名)(函数的参数列表);
(3)程序示例如下:
#include <stdio.h>
int sum(int x,int y)
{
return x+y;
}
int main(int argc, const char * argv[])
{
int s=0;
int (*p)(int a,int b); //定义函数指针
p = sum; //给函数指针赋值,p指向sum,sum存的就是函数的首地址。
s = p(23,34);
printf("%d\n",s);
return 0;
}
该函数打印输出结果为57。
注意:
1、函数指针变量不能进行算术运算,这是与数组指针不一样的。
2、函数调用中*两边的括号不能少,另外,*只是一个符号,不能认为是取值运算。