c - 在c中返回具有自定义函数的数组不起作用
问题描述
我是 C 编程新手。看看我的代码并指出我做错了什么?这是我创建应该返回 int 数组的范围函数的代码。
#include<stdio.h>
int * range(int a, int b);
main()
{
int *r;
int j;
r = range(0,5);
printf("%d",r[0]); // getting the first one to check array but not working
// instead showing segmantation fault
}
int * range(int a, int b) {
int last[b];
int i,j;
for(i=a;i<b;i++){
last[i] = i;
}
return last;
}
解决方案
您正在返回一个本地数组的地址,该数组的生命周期以函数结束。
改变
int last[b];
至
int *last = malloc(sizeof(int) * b);
free(r);
之后别忘了打电话printf
推荐阅读
- python-3.x - 如何更改图像的通道尺寸?
- ansible - Ansible 没有转义 Windows 路径第一个参数
- html - 内部导航链接在谷歌浏览器中不起作用
- twitter-bootstrap - 将按钮附加到输入组的底部
- java - 后缀中缀优化
- mysql - 如何找到具有特定天数的开始日期的每个用户的收入数量
- javascript - `npm install` 和 `npm audit` 计数之间的区别?
- python - 拼接航拍无人机图像时出现单应性问题?
- java - sort subdocument in mogodb4.0 by java driver
- julia - Julia - UnderVarError