C语言的函数调用,可以区块化管理代码及功能模块,可以起到巧妙的优化代码,简化代码。
函数的定义由函数首部和函数体组成,函数首部包括函数的返回类型、函数名和参数列表,函数体包括函数的具体实现。
函数指针的本质是一个指针,该指针的地址指向了一个函数,所以它是指向函数的指针。函数的定义是存在于代码段,因此,每个函数在代码段中,也有着自己的入口地址,函数指针就是指向代码段中函数入口地址的指针。
指针函数顾名的本质是一个函数,不过它的返回值是一个指针。
1.无返回值无参数函数调用
例如:
int A,B,C;
Void sum(void){
C=A+B;
}
int main(){
A=2;
B=3;
sum();
return 0;
}
2.有返回值无参数函数调用
例如:
int A,B,C,D;
int sum(void){
C=A+B;
}
int main(){
A=2;
B=3;
D=sum();
return 0;
}
3.有返回值有参数函数调用
例如:
int C,D;
int sum(int A,int B){
C=A+B;
}
int main(){
D=3;
D=sum(2,3);
return 0;
}
4.函数指针调用
例如:
#include <stdio.h>
int max(int a, int b)
{
return a > b ? a : b;
}
int main(void)
{
int (*p)(int, int);
p = max;
int val = p(10, 15);
printf("max = %d \n", val);
return 0;
}
5.指针函数调用
例如:
# include <stdio.h>
# include <stdlib.h>
int * func_sum(int n)
{
if (n < 0)
{
printf("error!\n");
exit(-1);
}
static int sum = 0;
int *pp = ∑
for (int i = 0; i < n; i++)
{
sum += i;
}
return pp;
}
int main(void)
{
int nums = 0;
printf("please input one number:");
scanf("%d", &nums);
int *pr = func_sum(nums);
printf("sum:%d\n", *pr);
return 0;
}