函数指针有关问题
函数指针问题
#include <stdio.h>
void f0(int a, int b, int c){ printf( "f0 %d %d %d...\n ", a, b, c);}
void f1(int a, int b, int c){ printf( "f1 %d %d %d...\n ", a, b, c);}
void f2(int a, int b, int c){ printf( "f2 %d %d %d...\n ", a, b, c);}
int
main()
{
void (*fa[3])(int, int, int);
void (*fp)(int, int, int);
int i = 0;
fa[0] = f0;
fa[1] = f1;
fa[2] = f2;
fp = fa; //assignment from incompatible pointer type
for( ; i < 3; ++i)
(*(fp + i))(i, i + 1, i + 2);
}
我的疑惑是为什么fp与fa不是一个类型的指针?
要想正确赋值的话fp应该怎眼定义?并能实现后来的循环操作?
谢谢
------解决方案--------------------
一个是函数指针数组,一个是单个函数指针.你说能直接赋值么
------解决方案--------------------
由于数组是常指针
所以 fp==> *
fa==> **
多一级 :)
------解决方案--------------------
void (**fp)(int, int, int);
------解决方案--------------------
mark
#include <stdio.h>
void f0(int a, int b, int c){ printf( "f0 %d %d %d...\n ", a, b, c);}
void f1(int a, int b, int c){ printf( "f1 %d %d %d...\n ", a, b, c);}
void f2(int a, int b, int c){ printf( "f2 %d %d %d...\n ", a, b, c);}
int
main()
{
void (*fa[3])(int, int, int);
void (*fp)(int, int, int);
int i = 0;
fa[0] = f0;
fa[1] = f1;
fa[2] = f2;
fp = fa; //assignment from incompatible pointer type
for( ; i < 3; ++i)
(*(fp + i))(i, i + 1, i + 2);
}
我的疑惑是为什么fp与fa不是一个类型的指针?
要想正确赋值的话fp应该怎眼定义?并能实现后来的循环操作?
谢谢
------解决方案--------------------
一个是函数指针数组,一个是单个函数指针.你说能直接赋值么
------解决方案--------------------
由于数组是常指针
所以 fp==> *
fa==> **
多一级 :)
------解决方案--------------------
void (**fp)(int, int, int);
------解决方案--------------------
mark