admin 管理员组

文章数量: 887021


2024年2月18日发(作者:oracle数据库服务端安装)

C语言二维数组作为函数参数的4种方式

在C语言中,二维数组是由多个一维数组组成的复合数据类型。对于二维数组作为函数参数,有四种常见的方式。

1.形参中指定列的方式:

这种方式是将二维数组的列数作为形参传递给函数。函数中可以通过指定固定列数的方式来接收并处理二维数组。

```c

void printArray(int arr[][3], int row)

for (int i = 0; i < row; i++)

for (int j = 0; j < 3; j++)

printf("%d ", arr[i][j]);

}

printf("n");

}

int mai

int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};

printArray(arr, 2);

return 0;

```

2.动态分配内存的方式:

在函数中,可以使用动态分配内存的方式接收二维数组作为参数。通过传递二维数组的地址和行列数,可以在函数中对二维数组进行操作。

```c

void printArray(int** arr, int row, int col)

for (int i = 0; i < row; i++)

for (int j = 0; j < col; j++)

printf("%d ", arr[i][j]);

}

printf("n");

}

free(arr);

int mai

int row = 2;

int col = 3;

int** arr = (int**)malloc(row * sizeof(int*));

for (int i = 0; i < row; i++)

arr[i] = (int*)malloc(col * sizeof(int));

}

arr[0][0] = 1;

arr[0][1] = 2;

arr[0][2] = 3;

arr[1][0] = 4;

arr[1][1] = 5;

arr[1][2] = 6;

printArray(arr, row, col);

return 0;

```

3.指针方式:

对于二维数组,可以通过将其转换为指向指针的指针的方式进行传递。在函数中,使用指向指针的指针来接收并处理二维数组。

```c

void printArray(int** arr, int row, int col)

for (int i = 0; i < row; i++)

for (int j = 0; j < col; j++)

printf("%d ", arr[i][j]);

}

printf("n");

}

int mai

int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};

int* ptr[2] = {arr[0], arr[1]};

printArray(ptr, 2, 3);

return 0;

```

4.数组方式:

在函数中,可以将二维数组看作是一个一维数组,并将其作为参数传递。函数中接收的实参是一个指向数组元素的指针,通过计算得到实际的行列数。

```c

void printArray(int* arr, int row, int col)

for (int i = 0; i < row; i++)

for (int j = 0; j < col; j++)

printf("%d ", *(arr + i*col + j));

}

printf("n");

}

int mai

int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};

printArray((int*)arr, 2, 3);

return 0;

```

以上是C语言中四种常见的方式来使用二维数组作为函数参数。根据实际情况,可以选择合适的方式来传递和处理二维数组。无论使用哪种方式,都需要注意数组的行列数以及内存的分配和释放。


本文标签: 数组 方式 指针 作为 接收