📄 任务疑难解答-函数做为参数.txt
字号:
#include "stdafx.h"
void wo(int a)
{ a=3;
printf("%d\n",a);
printf("woaini\n");
}
void cao()
{
printf("i will fuck you");
}
void ni(void (*wo)(int ))//参数是声明的意思...
{
(*wo)(3);
}
void ni(void (*wo)())
{
(*wo)();
}
int main(int argc, char* argv[])
{
ni(cao);
ni(wo);
return 0;
}
void add(int c,void (*a)(int b))
{
a(c);//具体参数在这边给出
a(100000);
}
void kao(int k)
{
cout<<k<<"i love you"<<endl;
}
void main()
{
add(4,kao);//保证:kao()与add()形式相同
}
我们经常需要把函数作为参数传入函数,有时候还需要使用函数指针构成的数组。以编写解释程序为例,在解释程序的运行中,常常需要根据被解释的语句调用各种函数,如求正弦、余弦或正切的函数。此时,用一个函数指针构成的数组取代大型switch语句,由数组下标实施调用。下面对上例程序进行扩充,分析扩充后的程序就可以对这种用法有一个基本的了解。扩充后的程序如下:
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
void check(char *a, char *b, int (*cmp)(const char *, const char *));
int numcmp(const char *, const char *);
void main()
{
char s1[80], s2[80];
gets(s1);
gets(s2);
if(isalpha(*s1))
check(s1, s2, strcmp); /*如果s1的内容是非数字字符*/
else
check(s1, s2, numcmp); /*如果s1的内容是数字字符*/
}
void check(char *a, char *b, int (*cmp)(const char *, const char *))
{
printf("Testing for equality...\n");
if(! (*cmp)(a, b)) printf("Equal.\n");
else printf("Not equal.\n");
}
int numcmp(const char *a, const char *b)
{
if(atof(a) == atof(b)) return 0;
else return 1;
}
在这个程序中,当用适当的函数指针调用check()时,check()既可检查字典序是否相等,也可检查数值是否相等
#include "stdafx.h"
#include "iostream.h"
void add(void (*a)(int b))
{
a(8);//具体参数在这边给出
a(100000);
}
void kao(int k)
{
cout<<k<<"i love you"<<endl;
}
void main()
{
add(kao);//保证:kao()与add()形式相同
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -