函数与指针

来源:互联网 发布:5g网络wifi什么意思 编辑:程序博客网 时间:2024/04/25 13:09

1.函数指针变量的定义

函数返回值类型(*指针变量名)();

int (*test)()=方法名;

void Method(){}

2将已有函数赋值给函数变量

test=Method;

注意事项;

c语言允许将任何已有的函数赋值给函数指针变量,所以一个函数指针变量在不同时间可以指向不同的函数。

为函数指针变量赋值时,只需要给出函数名字,无需在函数后使用括号,也不用传入参数。此处是将函数的入口赋值给函数指针变量,而不是将调用函数后的返回值赋值给函数指针变量。

3.函数指针变量的使用

(*函数指针变量)(参数);

int max (int a,int b){

if(a>b){

return a;

}else if(a=b){

return 0;

}else{

return b;}

void test(){}

//定义函数指针变量

int(*point)()=max;

//将max的函数指针给test

point=test;

//函数指针的调用

(*point)(1,2);

4,使用函数指针作为函数参数

void map(int*data,int length,int(*fn)()){

for(int *p=data;p<data+length;p++){

//此处的函数是动态传入的

printf("%d,",(*fn)(*p))

}

void method1(){}

void method2()

mian(){

int data[]={20,10,100};

map(data,3,method1);

map(data,3,method2);

}

}

}

5.返回指针的函数

为了保证函数返回的指针是有效的:

如果函数返回的指针指向被调用函数中的局部变量,该局部变量需要使用static修饰

让函数返回的指针指向暂时不会被释放的数据,如指向main()函数的变量,只有等main()函数执行完毕时该变量才会被释放。即在main()函数结束之前,函数的返回的指针是安全的。


0 0
原创粉丝点击