指针函数
的本质是一个函数,只不过其返回值是一个指针类型的变量。如函数
#include <stdio.h> #include <stdlib.h> int *max(int x,int y);//声明函数原型,返回值为int型指针 int main(int argc, const char * argv[]) { printf("Hello, World!\n"); printf("max %d\n", *max(1,2)); return 0; } int *max(int x,int y){ int *m = malloc(sizeof(int)); *m = x>y?x:y; return m; }
函数指针
的本质是一个变量,该变量的内容指向一个函数。如学习
#include <stdio.h> int max(int x,int y);//声明函数原型 int (*f)(int x,int y);//定义一个函数指针类型的变量 int main(int argc, const char * argv[]) { printf("Hello, World!\n"); printf("max %d\n", max(1,2)); f = max; printf("max %d\n",f(1,2)); return 0; } int max(int x,int y){ return x>y?x:y; }
其实能够把函数指针和指针函数与字符串指针和字符串变量相比较学习。函数指针中的函数名是一个常量,该常量指向函数在内存中的地址;指针函数则是一个变量,该变量的内容也是函数在内存中的地址,只不过变量能够从新赋值,而常量在程序载入内存中就已经肯定,没法进行从新复制。指针