【问题标题】:How to return array in c? [duplicate]如何在c中返回数组? [复制]
【发布时间】:2015-05-05 00:12:51
【问题描述】:

如何在 C 中返回数组?

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>

    int main()

    {
        int func(int);
        printf("%d",func(1));

    }

    int func(int n)
    {
        int i,arr[5]; //or int *arr=(int*)malloc(5);
        for (i=0; i<5; i++) {
            arr[i]=n++;
        }
        return arr;
    }

我想得到结果“11111”,但这段代码的结果是“1606416336”。
我该怎么做才能解决这个问题?

【问题讨论】:

  • 不能在C中返回本地数组,需要用malloc()动态分配。
  • 你不能永远在 C 中返回一个数组。这是一个令人讨厌的限制。但是,您可以返回一个包含数组的结构,或者让调用者创建一个数组并将指针作为参数传递给它。
  • int func(int n) { int i, v = 0; for (i=0; i&lt;5; i++) { v = v * 10 + n; } return v; }

标签: c


【解决方案1】:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int *func1(int);
    int func2(int);
    int *p = func1(1);
    int i;
    for(i=0; i < 5; ++i){
        printf("%d", p[i]);
    }
    printf("\n");
    free(p);

    printf("%d",func2(1));
    return 0;
}

int *func1(int n){
    int i;
    int *arr=(int*)malloc(5*sizeof(int));
    for (i=0; i<5; i++) {
        arr[i]=n;
    }
    return arr;
}

int func2(int n){
    int i, v = 0;
    for (i=0; i<5; i++){
        v = v * 10 + n;
    }
    return v;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多