如何定义一个指向函数的指针数组
即是如何定义一个数组,这个数组内的元素都是指向函数的指针其中函数的返回值是void或者其他类型还有如何把一个指针强制定义成指向函数的指针我的表达有错误1如何定义一个数组,...
即是
如何定义一个数组,这个数组内的元素都是指向函数的指针
其中函数的返回值是void或者 其他类型
还有如何把一个指针强制定义成指向函数的指针
我的表达有错误
1如何定义一个数组,这个数组内的元素都是指向函数的指针
其中函数的返回值全部是void或者全部是其他类型,(比如全部是char类型)
下面的答案中我看了基本上是用typedef定义的,如果我不想用typedef呢怎么定义
2 应该是把一个指针强制类型转换成指向函数的指针 展开
如何定义一个数组,这个数组内的元素都是指向函数的指针
其中函数的返回值是void或者 其他类型
还有如何把一个指针强制定义成指向函数的指针
我的表达有错误
1如何定义一个数组,这个数组内的元素都是指向函数的指针
其中函数的返回值全部是void或者全部是其他类型,(比如全部是char类型)
下面的答案中我看了基本上是用typedef定义的,如果我不想用typedef呢怎么定义
2 应该是把一个指针强制类型转换成指向函数的指针 展开
7个回答
展开全部
这个用typedef可以完成:
先定义一个函数指针的类型:typedef void (*pFUN)();
然后用这个类型pFUN定义一个数组
pFUN ptr[5];//[]里的数字是数组元素的个数,依情况而定:这儿用5做例子
这样ptr就是一个指向函数指针的数组。
对于“把一个指针强制定义”这我还没听过这个说法,只听过把指针强制转换成某个类型的指针:
强制类型转换用()运算,仍然用上面的定义类型。
例如:
void *p;//p是一个void指针
pFUN ptr;//ptr是一个指向void函数的指针
ptr=(pFUN)p;//把p强制转换成指向void函数的指针,然后就可以把它赋值给ptr指针。
不用typedef也可以,只要合并就可以了:
void (*ptr[5])();//这样ptr就是一个函数指针数组了.这样看很费解的!不如用typedef。
对于强制类型转换最好还是用typedef,那样可读性好。
而且个人认为指针没有那种基本类型(指向函数的指针类型),那是一种新的类型。所以要先定义那种类型才行。
用typedef定义新类型又没有什么副作用,而且容易读懂,何必非要不用typedef呢?!没必要把简单的问题复杂化!!
程序代码的可读性是很重要的,写复杂的类型而不用typedef是很令人反感的!
先定义一个函数指针的类型:typedef void (*pFUN)();
然后用这个类型pFUN定义一个数组
pFUN ptr[5];//[]里的数字是数组元素的个数,依情况而定:这儿用5做例子
这样ptr就是一个指向函数指针的数组。
对于“把一个指针强制定义”这我还没听过这个说法,只听过把指针强制转换成某个类型的指针:
强制类型转换用()运算,仍然用上面的定义类型。
例如:
void *p;//p是一个void指针
pFUN ptr;//ptr是一个指向void函数的指针
ptr=(pFUN)p;//把p强制转换成指向void函数的指针,然后就可以把它赋值给ptr指针。
不用typedef也可以,只要合并就可以了:
void (*ptr[5])();//这样ptr就是一个函数指针数组了.这样看很费解的!不如用typedef。
对于强制类型转换最好还是用typedef,那样可读性好。
而且个人认为指针没有那种基本类型(指向函数的指针类型),那是一种新的类型。所以要先定义那种类型才行。
用typedef定义新类型又没有什么副作用,而且容易读懂,何必非要不用typedef呢?!没必要把简单的问题复杂化!!
程序代码的可读性是很重要的,写复杂的类型而不用typedef是很令人反感的!
展开全部
定义方法为:
double add(double a,double b);
double sub(double a,double b);
double mul(double a,double b);
double div1(double a,double b);
double (*Func)(double,double);
参数个数,类型,返回值与所指向的函数一致,亦即这是定义了一个统配的类型。
带函数指针的函数的定义方法:
void printf(Func *f)
{
int a = 2;
int b = 3;
printf("%f",f(a,b))
}
double add(double a,double b);
double sub(double a,double b);
double mul(double a,double b);
double div1(double a,double b);
double (*Func)(double,double);
参数个数,类型,返回值与所指向的函数一致,亦即这是定义了一个统配的类型。
带函数指针的函数的定义方法:
void printf(Func *f)
{
int a = 2;
int b = 3;
printf("%f",f(a,b))
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
。。。我倒从来没想过这个问题。。。
一般在函数内,this就代表这个函数。
函数指针的类型是什么我不知道。
赋值的话,在每个函数里把this的值赋进数组就可以了。
一般在函数内,this就代表这个函数。
函数指针的类型是什么我不知道。
赋值的话,在每个函数里把this的值赋进数组就可以了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
"函数的返回值是void或者 其他类型"
说明函数指针的类型不同
如果数组中的元素类型不相同,那还叫数组吗?
说明函数指针的类型不同
如果数组中的元素类型不相同,那还叫数组吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
typedef void (*pfFunction)();
pfFunction a[];
(pfFunction)P ,把P强制转换成函数指针
pfFunction a[];
(pfFunction)P ,把P强制转换成函数指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询