C语言返回数组
时间: 2023-08-13 16:06:31 浏览: 104
在 C 语言中,函数不能直接返回一个数组,但可以通过以下两种方式来返回一个数组:
1. 将数组作为参数传递给函数并修改它
你可以将数组作为参数传递给函数,并在函数内部修改它。这样,函数就可以修改原始数组,而不需要返回它。
例如,以下函数将接受一个整数数组和一个整数大小,并将数组中的每个元素加倍:
```c
void double_array(int array[], int size) {
for (int i = 0; i < size; i++) {
array[i] *= 2;
}
}
```
你可以在主函数中声明一个数组并将其传递给 double_array() 函数。由于数组是通过引用传递的,因此函数可以修改它:
```c
int my_array[] = {1, 2, 3, 4, 5};
int size = 5;
double_array(my_array, size);
for (int i = 0; i < size; i++) {
printf("%d ", my_array[i]);
}
```
这将输出以下内容:
```
2 4 6 8 10
```
2. 动态分配内存并返回指针
如果你需要在函数中动态创建数组并返回它,则需要在函数内部动态分配内存,并返回一个指向该内存的指针。
例如,以下函数将接受一个整数 n,并返回一个包含 n 个随机整数的数组:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int* create_random_array(int n) {
int* array = malloc(n * sizeof(int));
srand(time(NULL));
for (int i = 0; i < n; i++) {
array[i] = rand() % 100;
}
return array;
}
```
在这个例子中,函数使用 malloc() 函数动态分配了一个大小为 n * sizeof(int) 的内存块,并将其转换为整数指针。然后,函数使用 srand() 和 rand() 函数生成随机数,并将它们存储在数组中。最后,函数返回指向数组的指针。
你可以在主函数中调用 create_random_array() 函数,并使用返回的指针来访问数组:
```c
int* my_array = create_random_array(5);
for (int i = 0; i < 5; i++) {
printf("%d ", my_array[i]);
}
free(my_array);
```
这将输出一个包含 5 个随机整数的数组,并释放由 malloc() 函数分配的内存。
希望这能帮助你理解在 C 语言中如何返回一个数组。
阅读全文