gpt4 book ai didi

c - 使用指向c中指针变量的指针将二维数组传递给函数

转载 作者:太空宇宙 更新时间:2023-11-04 01:59:43 24 4
gpt4 key购买 nike

以指针为参数的方法

int findMax(int **a, int m, int n)
{
int max=**a,i,j;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(max<=a[i][j]){
max=a[i][j];
}
}
}
return max;
}

这是调用 findMax 方法的主函数。

int main()
{
// Variable Declaration
int m,n,i,j,a[50][50],*arr[50],**arrd;

// User Input
printf("Enter the number of rows in the matrix\n");
scanf("%d",&m);
printf("Enter the number of columns in the matrix\n");
scanf("%d",&n);
printf("Enter the elements in the matrix\n");
for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
// Single Pointer Allocation
for(i=0;i<m;i++){
arr[i]=&a[i][0];
}
arrd=&arr[0];
// Output
printf("The matrix is\n");
for(i=0;i<m;i++){
for(j=0;j<n;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("The maximum element in the matrix is %d\n",findMax(arrd,m,n));
return 0;
}

我只想使用一个接受指向数组指针的指针的函数找出二维数组中的最大元素。这段代码工作正常,但我正在寻找更好的方法......

最佳答案

#include <stdio.h>

#define NUMCOLUMNS 50
#define NUMROWS 50

int findMax(int (*a)[NUMCOLUMNS], int m, int n)
{
int max=**a,i,j;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(max<=a[i][j]){
max=a[i][j];
}
}
}
return max;
}

int main()
{
// Variable Declaration
int m,n,i,j,a[NUMROWS][NUMCOLUMNS];

// User Input
printf("Enter the number of rows in the matrix\n");
scanf("%d",&m);
printf("Enter the number of columns in the matrix\n");
scanf("%d",&n);
printf("Enter the elements in the matrix\n");
for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
// Output
printf("The matrix is\n");
for(i=0;i<m;i++){
for(j=0;j<n;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("The maximum element in the matrix is %d\n",findMax(a,m,n));
return 0;
}

关于c - 使用指向c中指针变量的指针将二维数组传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28930946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com