int x[][5]和int(*x)作为形参时有什么区别
时间: 2023-06-16 14:07:12 浏览: 143
在C语言中,int x[][5]和int(*x)都可以用作数组类型的形参,但它们有不同的含义和用法。
int x[][5]表示一个二维数组,第一维的长度未知,第二维的长度为5。当作为形参时,可以用来接收任意行数、5列的二维数组。例如:
```
void func(int x[][5], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 5; j++) {
printf("%d ", x[i][j]);
}
printf("\n");
}
}
```
int(*x)表示一个指向整型的指针,当作为形参时,可以用来接收任意长度的一维数组。例如:
```
void func(int *x, int n) {
for (int i = 0; i < n; i++) {
printf("%d ", x[i]);
}
}
```
需要注意的是,当数组名作为函数参数传递时,它会自动转换为指向数组首元素的指针,因此int x[][5]和int(*x)在函数调用时使用的方式有所不同:
```
int arr1[3][5] = {{1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15}};
int arr2[10] = {1,2,3,4,5,6,7,8,9,10};
func(arr1, 3); // 传递二维数组
func(arr2, 10); // 传递一维数组
```