函数指针:是指向函数的指针变量,因而函数指针本身应该是指针变量,只不过指针变量指向函数。
指针函数:带指针的函数,即本质是一个函数。
函数指针实例:
#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; }