C语言中函数能否以指针数组或者数组指针作为返回值返回至主函数
4条回答 默认 最新
- 艾尔森 2016-12-28 10:04关注
是可以的 但是如果返回的指针指向的是局部变量的话可能就会出现一些问题
int *test() { int a[10]; for(int i=0; i<10; i++) a[i] = i; return a; } int main() { int *p = test(); for(int i=0; i<10; i++) printf("%d\n,p[i]); }
向上面这个输出的结果就不会是0123456789,因为局部变量的生命周期到函数作用完后,在返回主函数时局部变量(例中的a[])被释放掉了 所以其实这时的p还是一个野指针
int *test(int *a) { for(int i=0; i<10; i++) { a[i] = i; } return a; } int main() { int a[10]; int *p = test(a); for(int i=0; i<10; i++) cout<<p[i]<<endl; }
但是如果像这样就会如愿输出0123456789,不过如果是C++的话实现上面这种情况比较推荐使用引用
解决 无用评论 打赏 举报
悬赏问题
- ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
- ¥15 乘性高斯噪声在深度学习网络中的应用
- ¥15 运筹学排序问题中的在线排序
- ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
- ¥30 求一段fortran代码用IVF编译运行的结果
- ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
- ¥15 C++ 头文件/宏冲突问题解决
- ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
- ¥50 安卓adb backup备份子用户应用数据失败
- ¥20 有人能用聚类分析帮我分析一下文本内容嘛