首页 > 解决方案 > 在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;
}

标签: carraysfunction

解决方案


您正在返回一个本地数组的地址,该数组的生命周期以函数结束。

改变

int last[b];

int *last = malloc(sizeof(int) * b);

free(r);之后别忘了打电话printf


推荐阅读