c语言数组作为形参怎么传递和返回
时间: 2023-11-16 21:23:33 浏览: 62
在 C 语言中,数组作为形参传递时,实际上传递的是数组的首地址,也就是数组名,因此可以将形参定义为指向相应类型的指针,如:
```c
void foo(int arr[], int n) {
//...
}
```
或者是:
```c
void foo(int *arr, int n) {
//...
}
```
在函数内部,可以通过指针访问数组元素,但无法获取数组的长度,因此需要通过另外一个参数来传递数组的长度。
如果想要在函数内部修改数组的值,可以通过指针的方式进行修改:
```c
void modify(int *arr, int n) {
for(int i = 0; i < n; i++) {
arr[i] = i;
}
}
int main() {
int arr[5] = {0};
modify(arr, 5);
// arr 数组的值现在为 {0, 1, 2, 3, 4}
return 0;
}
```
如果想要从函数中返回一个数组,可以使用指针方式进行返回。例如,可以通过动态内存分配来创建一个数组,然后返回指向数组的指针:
```c
int *create_array(int n) {
int *arr = (int *)malloc(n * sizeof(int));
for(int i = 0; i < n; i++) {
arr[i] = i;
}
return arr;
}
int main() {
int *arr = create_array(5);
// arr 数组的值现在为 {0, 1, 2, 3, 4}
free(arr); // 记得释放内存
return 0;
}
```
需要注意的是,在使用动态内存分配创建数组时,需要在使用完数组后记得释放内存,以避免内存泄漏。