提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:以下是本篇文章正文内容,下面案例可供参考
一、函数指针P调用函数max
#include <stdio.h>
void main()
{
int max(int x, int y);
int (*p)();
int x, y, z;
p = max;
printf("请输入两个数:\n");
scanf("%d %d", &x, &y);
z = (*p)(x, y);
printf("max=%d", z);
}
int max(int a, int b)
{
if (a > b)
return a;
else
return b;
}
运行结果为:
请输入两个数:
22 56
max=56
二、函数中的形参和实参
1.形参
形参的作用:
- 形参是定义函数时在括号里定义的变量,它只是申明用的,是没有值的。
- 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。
形参的特点:
- 变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此, 形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
2.实参
实参的作用:
- 实参是调用函数时 传给形参的值,是有值的。实参是形参被具体赋值之后的值,参加实际的运算,有实际作用。
- 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。
实参的作用:
- 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们 都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。
3.举例
#include <stdio.h>
void test(int* p) //此处P为形参
{
int x = 4;
p = &x;
printf("在函数中p中的地址为: % d\n", p);
}
int main()
{
int e = 3;
int* p = &e; //此处P为实参
printf("main:p中存的地址为:%d\n", p);
test(p);
printf("main:p中存的地址为: % d\n", p);
return 0;
}
运行结果为:
main:p中存的地址为:14416364
在函数中p中的地址为: 14416120
main:p中存的地址为: 14416364