指针函数
格式:
返回类型 *函数名(参数列表);
不要返回局部变量的指针
举个例子
#include <stdio.h> char *get_Word(char s); char *get_Word(char s) { char str[] = "Apple"; // 函数内的局部变量 switch (s) { case 'A': return str; // 无法返回这个 str case 'B': return "Bad"; case 'C': return "Cat"; default: return "None"; } } int main() { char i; printf("请输入一个字母:"); scanf("%s",&i); printf("%s\n",get_Word(i)); return 0; }
函数指针
定义格式:
返回值 (*名称)(参数类型);
#include <stdio.h> int square(int num); int square(int num){ return num * num; } int main(){ int num; int (*fp)(int); // 定义 函数指针 printf("输入一个数字: "); scanf("%d",&num); fp = square; printf("%d * %d = %d\n",num,num,(*fp)(num)); printf("%d * %d = %d\n",num,num,*fp(num)); return 0; }
头脑风暴
涉及知识 & 实现功能
涉及知识
把 函数指针
作为函数的返回值
。
实现功能
用户输入一个式子(1+5)
,自动判断符号
,进行相应的运算
。
代码说明
声明函数
int add(int, int); // 加法函数 int sub(int, int); // 减法函数 int (*select(char))(int, int); // 符号选择,返回相应的计算函数 int calc(int (*)(int, int), int, int); // 计算函数,传入一个函数指针,以及两个数字
函数方法
// 加法函数 int add(int num1, int num2){ return num1 + num2; } // 减法函数 int sub(int num1, int num2){ return num1 - num2; } // 符号选择 int (*select(char op))(int, int){ switch (op){ case '+':return add; case '-':return sub; } } // 计算函数 int calc(int (*fp)(int, int), int num1, int num2){ return (*fp)(num1, num2); }
使用
#include <stdio.h> int main(){ int num1 = 0, num2 = 0; char op; int (*fp)(int,int); // 接收函数指针 printf("输入一个式子(1+1):"); scanf("%d%c%d", &num1, &op, &num2); fp = select(op); // 符号选择,返回函数指针 printf("%d %c %d = %d",num1,op,num2,calc(fp,num1,num2)); return 0; }
版权声明:《 【C语言】指针函数 & 函数指针 》为明非原创文章,转载请注明出处!
最后编辑:2020-12-11 04:12:55