⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 任务疑难解答-函数做为参数.txt

📁 完美C++疑难解答 详细的讲解了C/C++编程过程中的一些难点和容易混淆的地方!值得收藏反复研究。
💻 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 + -