返回“函数指针”和“数组指针”的函数怎么写?
时间:2010-08-24
来源:互联网
这两个函数的返回值(???)部分怎么写?test是个函数。
??? myfun1()
{
int (*p)[] = {"how", "are", "you"};
return p;
}
??? myfun2()
{
int (*q)(int) = test;
return q;
}
作者: zhou304082042 发布时间: 2010-08-24
那么你在外部怎么识别到底是哪个= =!
作者: daybreakcx 发布时间: 2010-08-24
作者: davelv 发布时间: 2010-08-24
作者: linuxlixk 发布时间: 2010-08-24
- (int (*)[]) fun()
-
- (int(*)()) fun()
- ????????
作者: jackin0627 发布时间: 2010-08-24
我不是要一起返回
作者: zhou304082042 发布时间: 2010-08-24
作者: daybreakcx 发布时间: 2010-08-24
不行啊。。。
作者: zhou304082042 发布时间: 2010-08-24
一个标志域,表示值域的类型;另外一个是值域,也就是你的指针,使用void *类型即可。
作者: davelv 发布时间: 2010-08-24
- #include <stdio.h>
-
- typedef int (*FUNCTION)();
-
- int f1(int arg){return arg;}
- int f2(int arg){return arg;}
- int f3(int arg){return arg;}
-
- FUNCTION get_function(int i)
- {
- FUNCTION function[] = {f1,f2,f3};
- return function[i>2?0:i];
- }
-
- int main()
- {
- FUNCTION f = get_function(1);
- printf("%d\n", f(100));
- return 0;
- }
作者: zhangsuozhu 发布时间: 2010-08-24
你的函数指针类型都一样的,楼主想返回不同类型的函数指针
作者: davelv 发布时间: 2010-08-24
这是啥啊?指向数组的指针吗?
作者: zhangsuozhu 发布时间: 2010-08-24
作者: daybreakcx 发布时间: 2010-08-24
- #include <stdio.h>
-
-
- int f1(int arg){return arg;}
- char f2(char arg){return arg;}
- long f3(long arg){return arg;}
-
- void *get_function(int i)
- {
- void *function[] = {(void *)f1,(void *)f2,(void *)f3};
- return function[i>2?0:i];
- }
-
- int main()
- {
- char (*f)(char) = get_function(2);
- printf("%c\n", f('a'));
- return 0;
- }
作者: zhangsuozhu 发布时间: 2010-08-24
作者: daybreakcx 发布时间: 2010-08-24
回复 zhangsuozhu
typedef int (*FUNCTION)();
int f1(int arg){return arg;}
int f2(int arg){return arg;}
int f3(int arg){return arg;}
FUNCTION get_function(int i)
{
FUNCTION function[] = {f1,f2,f3};
return function[i>2?0:i];
}
int main()
{
FUNCTION f = get_function(1);
printf("%d\n", f(100));
return 0;
}
这是我想要的,我想问的是语法问题,我是想返回指向函数的指针,我原来想这样写:
int (*)() get_function(int i)
{
FUNCTION function[] = {f1,f2,f3};
return function[i>2?0:i];
}
提示语法错误,你是用typedef定义了这个返回类型
typedef int (*FUNCTION)();
FUNCTION get_function(int i)
{
FUNCTION function[] = {f1,f2,f3};
return function[i>2?0:i];
}
这里一定要定义类型吗?能不能直接写返回这种类型?还有你调用函数指针指向的函数时用的:f(100),C语言程序设计(第2版)上怎么说要这么写:(*f)(100)?
另外这本书上的这两个声明分别表示什么:
1: char (*(*x())[])()
2: char (*(*x[3])())[5]
作者: zhou304082042 发布时间: 2010-08-24
作者: liexusong 发布时间: 2010-08-24
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28