指针函数和函数指针
1.如何在函数中改变传入的实参的值
只需要把函数的形参写成指针就可以了,这种情况下形参在传入的时候相当于传入的是它的地址,函数在修改值的时候会直接找到这个地址,去改这个内存地址中的值,所以会把实参的值给修改掉,而不会像使用普通参数的函数一样,局部参数用完就释放,跟外部没有任何关系。
2.指针函数
其实没什么特别的,指针函数就是返回值为一个指针的函数,需要注意的只有一点,就是不要返回局部变量的指针,因为局部变量在函数运行完后就会释放,不能被返回。
3.函数指针
是一个指针,这个指针是指向函数的。在编译器中函数名会被翻译成一个地址,所以函数也是可以被指针指向的。举个例子:
include<stdio.h>
int squre(int);
int squre(int num)
{
return num*num;
}
int main()
{
int num = 8;
int (*fp)(int) // 这就是定义了一个函数指针,用来指向squre,注意函数指针的返回值和参数的类型要和指向的函数一致!
fp = squre; //这句也可以写成 fp = &squre; 但是因为我们知道squre本身就是一个地址,就没必要了
printf("%d\n",(*fp)(num)); //这里也可以写成 fp(num)没有必要加上*,但是容易让人误解成fp是一个函数名,所以最好加上*
return 0;
}