在C语言中,可以通过以下方式定义数组形参:
-
使用指针作为形参:传递数组的地址。定义数组形参时,可以使用指针类型声明,例如:
void functionName(int *arr, int size) { // 函数体 }
在这种情况下,函数内部可以通过指针访问和修改数组的元素。
-
显式指定数组大小:传递数组的内容。定义数组形参时,可以使用具体的数组类型声明,配合指定的大小,例如:
void functionName(int arr[], int size) { // 函数体 }
这种方式与第一种方式相似,只是不需要使用指针符号,而是直接使用数组类型声明。
需要注意的是,在函数调用时,传递给数组形参的实参必须是数组类型,不能是指针类型。比如,以下做法是错误的:
int main() {
int *arr = malloc(sizeof(int) * 10); // 动态分配数组内存
functionName(arr, 10); // 错误!arr是指针类型,而不是数组类型
free(arr);
return 0;
}
正确的做法是使用具体的数组类型:
int main() {
int arr[10]; // 声明一个具有10个元素的数组
functionName(arr, 10); // 正确!传递数组类型
return 0;
}