自己老是忘,就写下来了
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">1、返回指针值的函数</span>
定义: 类型名 * 函数名(参数表列) 如 int * a(int x,int y) 调用该函数后,返回值为一个指向整型数据的指针
2、指向函数的指针 函数的入口地址即为函数的指针
定义: 数据类型 (* 指针变量名)(函数参数列表)
使用注意:用函数指针调用函数时,只需要将(* 指针变量名)代替函数名即可
示例:
int (* pointer) (int,int); //定义一个指向函数的指针,其中,*与pointer用括号括起来代表这是一个指针变量,然后再与后面括号结合,表明此指针变量指向函数
int z=0;
int max(int x,int y)
{
if(x>=y) return x;
else return y;
}
pointer=max; //将函数的入口地址赋给指针变量pointer
z=(* pointer)(x,y);
3、指针变量作为函数参数
代码示例:
int main()
{
void max(int * p1,int * p2);
int a=5,b=3;
int * pointer_1;
int * pointer_2;
pointer_1 = &a;
pointer_2 = &b;
printf("%d %d\n",a,b);
max(pointer_1,pointer_2); //调用这个函数时,将实参变量的值送给形参变量,采取的是“值传递”的方式,调用后,形参p1的值为&a,形参p2的值为&b
printf("%d %d\n",a,b);
system("PAUSE");
return 0;
}
void max(int * p1,int * p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
4、指向结构体变量的指针
示例代码:
struct student
{
int num;
int name;
}stu1;
struct student * pointer;
pointer = &stu1;