1.深入函数
--函数的本质是一段内存中的代码(占用一片连续内存)
--函数拥有类型,函数类型有返回值和参数类型列表组成
eg:int sun(int n) <==>int (int)
void swap(int* pa, int* pb)<==>void (int* ,int*)
void g(void);<==>void(void)
2.事实
--函数名就是函数体代码的骑施地址(函数入口地址)
--通过函数名调用函数,本质为指定具体地址的跳转执行
--可定义指针来保存函数入口的地址
3.函数指针(Type func(Type1 a, Type2 b))
--函数名即函数入口地址,类型为Type(*)(Type1, Type2)
--函数func,&func与func数值相同,意义相同
--指向函数的指针:Type(*pFunc)(Type1, Type2) = func;
eg:int add(int a, int b);
int(*pFunc)(int, int) = add;//int(*pFunc)(int, int) = &add;
4.函数指针参数
--函数指针参数就是指针(变量, 保存内存地址)
eg:int add(int a, int b, int*(pFunc)(int, int));
5.注意
--函数指针只是单纯的保存函数的入口地址
--不能进行指针的移动运算
6.数组参数
--函数的数组形参退化为指针,所以不包含数组实参的长度信息,使用数组名调用时,传递的是0号元素的地址;
eg:void func(int a[])<===>void func(int* a)<===>void func(&int a[0])
小结:
函数名的本质是函数体的入口地址
函数类型由返回值和参数类型列表组成
可定义指向函数的指针:Type(*pFunc)(Type1, Type2)
函数指针只是单纯的保存函数的入口地址(不能进行指针运算)
标签:函数,--,void,C语言,int,func,指针 From: https://www.cnblogs.com/ysnana/p/17114953.html