69,371
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
int max(int x,int y) /* 声明一个函数 */
{
return(x > y ? x : y);
}
void main()
{
int (*ptr)(int, int);/* 声明一个函数指针 */
int a,b,c;
ptr = max;/* 将func函数的首地址赋给指针f */
scanf("%d%d",&a,&b);
c=(*ptr)(a,b);
printf("a=%d,b=%d,max=%d",a,b,c);
}
int a(int n, char *s)
{
//省略代码
}
int b(char *in, char *out, int n)
{
//省略代码
}
int main()
{
char str[100], ss[200];
int n, m;
int (*ptr_a)(XXXXXX), (*ptr_b)(XXXXXX);/* 如何声明这两个函数指针? */
/* save_func函数支持不定参数,并且能保存这些参
* 数,等调用run_func函数时,就会调用函数指针
* 指向的函数,并将保存的这些参数传给这个函数
*/
save_func( ptr_a, a, n, str);
save_func( ptr_b, b, str, ss, m);
run_func(ptr_a);
run_func(ptr_b);
}
typedef struct
{
int a;
char b;
}test;
int func(void *in)
{
test *t;
t = (*test)in;
t->a = 1;
t->b = 'a';
}
int main()
{
test a;
func((void)a);
}
int main(int argc, char* argv[]); 改成 int main(); //避免编译器不同
/*LZ所说的,实在没想好.. 下面是用共同体写的,算是一个思路吧,
当将某个函数赋值给共同体中的一个函数指针成员后,就可以通过共同体中
其他与函数参数相同的函数名调用*/
#include <iostream>
using namespace std;
void Show()
{
cout<<"Show()"<<endl;
}
void Add(int a, int b)
{
cout<<"a + b = "<<a + b<<endl;
}
void PrintStr(char* ch)
{
cout<<ch<<endl;
}
typedef void (*PShow)(void);
typedef void (*PAdd)(int a, int b);
typedef void (*PPrintStr)(char *ch);
union FunPtr
{
PShow fun1;
PAdd fun2;
PPrintStr fun3;
};
int main(int argc, char* argv[])
{
int a = 3;
int b = 4;
char* str = "Hello World!";
FunPtr fun;
fun.fun1 = (PShow)Show;
fun.fun1();
fun.fun1 = (PShow)Add;
fun.fun2(a, b);
fun.fun1 = (PShow)PrintStr;
fun.fun3(str);
system("pause");
return 0;
}