C语言二维数组作为函数实参
时间: 2023-09-24 15:11:38 浏览: 126
当我们将二维数组作为函数的实参时,实际上传递的是指向二维数组首元素的指针,也就是二级指针。在函数内部,我们可以像操作普通的二维数组一样来进行操作。下面是一个例子:
```c
void printArray(int (*arr)[3], int rows) {
for(int i=0; i<rows; i++) {
for(int j=0; j<3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main() {
int arr[2][3] = {{1,2,3}, {4,5,6}};
printArray(arr, 2);
return 0;
}
```
在上面的例子中,我们定义了一个二维数组 `arr`,并将其作为参数传递给了 `printArray` 函数。函数内部通过指针操作二维数组,最终输出了数组的所有元素。
相关问题
C语言在主函数中输入 10 个等长的字符串。自定义一个函数对这 10 个字符串进行升序排序, 在主函数中调用此函数并输出排序好的字符串。 【设计要求】 (1)用二维数组作为自定义函数函数的数据类型; (2)使用冒泡排序对字符进行升序排序; (3)在主函数中输入 10 个等长的字符串,存储在一个二维数组中,以这个二维数组的 数组名作为实参进行地址传递调用自定义函数; (4)在主函数中输出排序后的结果
以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
void bubbleSort(char arr[][100], int n) {
int i, j;
char temp[100];
for(i = 0; i < n-1; i++) {
for(j = 0; j < n-i-1; j++) {
if(strcmp(arr[j], arr[j+1]) > 0) {
strcpy(temp, arr[j]);
strcpy(arr[j], arr[j+1]);
strcpy(arr[j+1], temp);
}
}
}
}
int main() {
char str[10][100];
int i, n = 10;
printf("Enter 10 strings of equal length:\n");
for(i = 0; i < n; i++) {
scanf("%s", str[i]);
}
bubbleSort(str, n);
printf("\nSorted strings are:\n");
for(i = 0; i < n; i++) {
printf("%s\n", str[i]);
}
return 0;
}
```
在这个程序中,我们首先定义了一个 `bubbleSort` 函数,该函数采用冒泡排序算法对字符串数组进行升序排序。然后,在 `main` 函数中,我们声明了一个二维字符数组 `str`,并要求用户输入 10 个等长的字符串。接下来,我们将该数组作为地址传递给 `bubbleSort` 函数,并在排序后输出排好序的字符串数组。
将二维数组当作实参输入函数的C语言代码
以下是将二维数组当作实参输入函数的C语言代码:
```c
#include <stdio.h>
void printArray(int arr[][3], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
printArray(arr, 2);
return 0;
}
```
这个程序定义了一个名为`printArray`的函数,该函数接受一个二维数组和一个整数作为参数。函数内部使用两个嵌套的循环来遍历数组并打印每个元素的值。在主函数中,我们定义了一个二维数组`arr`,并将其作为实参传递给`printArray`函数。
阅读全文