我正在学习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;
}
我无法弄清楚我的问题是什么。
答案 0 :(得分:2)
这是您在C
中声明数组的方式:
int a[SIZE];
[您发布的示例是C#
和java
声明数组的方式]
另外,正如其他人所说,您发布的代码有几个问题:
C
中返回数组(仅指向数组或结构的指针)答案 1 :(得分: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;
}
答案 2 :(得分: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;
}