函数指针:是指向函数的指针变量,因而函数指针本身应该是指针变量,只不过指针变量指向函数。
指针函数:带指针的函数,即本质是一个函数。
函数指针实例:
#include<stdio.h>
#include<iostream>
int max(int, int);
int min(int, int);
int add(int, int);
int process(int a, int b, int(*func)(int a, int b));
int main() {
int a, b;
printf("请输入a,b的值,以空格隔开:\n");
scanf_s("%d %d", &a, &b);
printf("a=%d,b=%d,max=%d\n", a, b, process(a,b,max));
printf("a=%d,b=%d,min=%d\n", a, b, process(a, b, min));
printf("a=%d,b=%d,add=%d\n", a, b, process(a, b, add));
system("pause");
return 0;
}
int max(int a, int b) {
if (a >= b) {
return a;
}
else
{
return b;
}
}
int min(int a, int b) {
if (a >= b) {
return b;
}
else
{
return a;
}
}
int add(int a, int b) {
return a + b;
}
int process(int a, int b, int(*func)(int a,int b)) {
return (*func)(a, b);
}
指针函数实例:
#include<stdio.h>
#include<iostream>
#include<string.h>
char* initMemory() {
//开辟32个字节的内存,并用字符指针s指向该内存
char* s = (char*)malloc(sizeof(char) * 32);
return s;
}
int main() {
//定义一个指针接收函数返回值
char* ptr = initMemory();
strcpy(ptr, "hello world");
printf("%s\n", ptr);
//释放内存
free(ptr);
system("pause");
return 0;
}