指针参数
返回值是指针
一、指针作参数形式的函数
//计算x的平方 x*x
void square(int *x)
{
int a=*x;
*x=a*a;
}
二、指针作返回值的函数
int *square(int *x)
{
int a=*x;
*x=a*a;
return x;
}
三、慎用自动变量返回指针
int* square3(int *x)
{
int a=*x * *x;
return &a; //危险 用自动变量
}
函数指针和指针函数
一、函数指针概念
函数的地址存放了函数开始执行的位置(起始地址),存放在函数指针中的内容就是这个地址。
不过,光有地址还不够,如果用函数指针来调用函数,还得知道函数返回值和参数的类型及个数。
二、函数指针的定义(声明)
返回类型 (*指针名)(参数类型)
int (*pn)(int,int);
三、函数指针数组
返回类型 (*指针名[n])(参数类型)
int (*pn[2])(int,int);
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int add(int a,int b,int d) { return a+b+d; } int mul(int a,int b,int c) { return a*b*c; } int main(void) { int (*pn[2])(int,int,int); pn[0]=add; pn[1]=mul; printf("%d ", pn[0](1,3,7) ); printf("%d ", pn[1](8,3,2) ); getchar(); getchar(); return 0; }