-1

我正在学习C并尝试编写一个非常简单的程序。这是我的代码:

#include <stdio.h>

int[] getNumbers( int x, int y, int z );

int main() {
    int[] theNumbers = getNumbers(5,6,7);
    return 0;
}

int[] getNumbers( int x, int y, int z) {
    int[] numbers = { x, y, z };
    return numbers;
}

我无法弄清楚我的问题是什么。

4

3 回答 3

2

这是您在 中声明数组的方式C

int a[SIZE];

C#[您发布的示例是如何java声明数组]

此外,正如其他人所指出的,您发布的代码存在几个问题:

  • 你不能返回一个数组C(只有一个指向数组或结构的指针)
  • 你不应该返回对局部变量的引用(使用 malloc() 代替)
于 2013-08-24T00:54:52.110 回答
1

这是一个在 C 中有效的示例方法。可能有更好的方法,但不清楚实际目标是什么。这只是说明了一些处理您尝试做的事情的方法,但是在工作 C 中。C 将比 Java 之类的语言更加严格和明确。Java 恰好从 C/C++ 中获取了一些语法。

#include <stdio.h>

typedef struct { int a[3]; } int_array;

int_array getNumbers( int x, int y, int z );

int main() {
    int_array theNumbers = getNumbers(5,6,7);
    printf( "%d, %d, %d\n", theNumbers.a[0], theNumbers.a[1], theNumbers.a[2] );
    return 0;
}

int_array getNumbers( int x, int y, int z) {
    int_array numbers = { x, y, z };
    return numbers;
}
于 2013-08-24T01:02:44.017 回答
1

在 C 中我们不能返回一个数组,但我们可以返回一个数组指针。

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

int* getNumbers(int x, int y, int z)
{
    int *num_arr     = malloc(3 * sizeof(int));
    *(num_arr)       = x;
    *(num_arr + 1)   = y;
    *(num_arr + 2)   = z;

    return num_arr;
}

int main(int argc, char **argv)
{
    int *a;
    a = getNumbers(5, 6, 7);

    // printf("%d %d %d\n", a[0], a[1], a[2]);

    return 0;
}
于 2013-08-24T01:08:17.773 回答