c函数能返回一个数组吗?
时间:2010-08-23
来源:互联网
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- // return a char array
- char *ch_return()
- {
- char hello[] = "Hello";
- char *str = hello;
-
- return str;
-
- }
-
- int main()
- {
- char *str;
- str = ch_return();
-
- printf("The value is %s\n", str);
-
- return 0;
-
- }

更近一步,真正的目的是想通过返回一个指针数组的指针,来返回任意多个返回值,不知可行否,请高人指教

作者: liunxcu 发布时间: 2010-08-23

作者: zhangsuozhu 发布时间: 2010-08-23
这样可以
作者: hellioncu 发布时间: 2010-08-23
作者: davelv 发布时间: 2010-08-23
作者: daybreakcx 发布时间: 2010-08-23
你自己调ESP指针就行了

作者: pk8995 发布时间: 2010-08-23
对
作者: zhangsuozhu 发布时间: 2010-08-23
作者: ddgfff 发布时间: 2010-08-23
作者: daybreakcx 发布时间: 2010-08-23

作者: liunxcu 发布时间: 2010-08-23
作者: zhuqing_739 发布时间: 2010-08-23

作者: liunxcu 发布时间: 2010-08-23
好多公司都用这道题来考应试者。
作者: rune_zhang 发布时间: 2010-08-23
liunxcu 发表于 2010-08-23 15:27
貌似我上面的帖子被无视了
你在接口文档上写清楚,这块内存是需要手工释放的就可以了。
没有要求你传入内存地址,而返回了指向数据的指针的函数都是需要手工释放的,或者是静态内存,不可重入的。
例如malloc,例如ctime
作者: davelv 发布时间: 2010-08-23
谢谢指教,这才明白可重入与不可重入讲的是这个意思啊

作者: liunxcu 发布时间: 2010-08-23
用的时候自己算一下位置,总之最后把栈调平衡了就行
这样姑且算是返回一个数组吧,真正返回一个数组显然不可能了,返回值一般约定放在EAX,哪放的下一个数组啊,呵呵
作者: pk8995 发布时间: 2010-08-23
高手啊,这么深入啊,

作者: liunxcu 发布时间: 2010-08-23
用的时候自己算一下位置,总之最后 ...
pk8995 发表于 2010-08-23 16:11
这样调用次数多了,栈就溢出了。
作者: davelv 发布时间: 2010-08-23
davelv 发表于 2010-08-23 16:21
这是另一个问题……
作者: pk8995 发布时间: 2010-08-23
作者: hanzengbo 发布时间: 2010-08-23
pk8995 发表于 2010-08-23 16:22
可以返回数组的,你用struct包装一个看看就知道了,返回值不一定是用EAX寄存器,如果超过了寄存器长度的返回值就用内存复制的方法来处理。
作者: davelv 发布时间: 2010-08-23
davelv 发表于 2010-08-23 16:28
呵呵,都说了是返回数组了哥们。struct A fun();这样编译器是知道A的size的,所以在函数调用后会跟一段memcpy的代码,但是写char [100] fun();这样的东西是不行的,而写char []fun(),这样就丢失了长度信息了~
还有除了基本上常见的调用约定都是从eax返回的,当然自己手写的是另一回事儿,我也见过用esi返回值的变态
作者: pk8995 发布时间: 2010-08-23
pk8995 发表于 2010-08-23 16:50
如果严格按照楼主说的来看,你的说法没错,道理也是正确的。但是struct里面的数组也是数组阿,不能一棒子打死嘛。
作者: davelv 发布时间: 2010-08-23
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28