gpt4 book ai didi

c - 使用双指针函数 C 语言访问二维数组

转载 作者:行者123 更新时间:2023-11-30 17:03:56 29 4
gpt4 key购买 nike

我试图借助双指针找到从 C 函数访问的 2D 数组中所有值的最大值。当我运行代码时,它只是终止并向调用者函数返回任何值。

我尝试更改代码以打印所有值以找出问题所在,发现它仅打印以下示例数据的 1 和 2 作为输入。对于示例代码运行,我提供了 row=2、col=2 和values=1,2,3,4

请告诉我为什么?另外,如果您的问题不清楚,请说出来。我度过了艰难的一天,所以也许无法更好地解释。

代码有一些限制:1. 函数签名(int **a,int m,int n)

#include<stdio.h>

int findMax(int **a,int m,int n){

int i,j;
int max=a[0][0];
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(a[i][j]>max){
max=a[i][j];
}
//printf("\n%d",a[i][j]);
}
}

return max;
}

int main(){
int arr[10][10],i,j,row,col;
printf("Enter the number of rows in the matrix");
scanf("%d",&row);
printf("\nEnter the number of columns in the matrix");
scanf("%d",&col);

printf("\nEnter the elements of the matrix");
for(i=0;i<row;i++){
for(j=0;j<col;j++){
scanf("%d",&arr[i][j]);
}
}

printf("\nThe matrix is\n");
for(i=0;i<row;i++){
for(j=0;j<col;j++){
printf("%d ",arr[i][j]);
}
printf("\n");
}
int *ptr1 = (int *)arr;
printf("\nThe maximum element in the matrix is %d",findMax(&ptr1,row,col));
return 0;
}

最佳答案

There is a few restrictions to the code: 1. Function Signature(int **a,int m,int n)

我猜你的任务是使用一个指针数组,所有这些指针都指向分配?

#include<stdio.h>
#include<stdlib.h>

int findMax(int **a,int m,int n){

int i,j;
int max=a[0][0];

for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
if(a[i][j]>max)
{
max=a[i][j];
}
//printf("\n%d",a[i][j]);
}
}

return max;
}

int main(){
int **arr;
int i,j,row,col;
printf("Enter the number of rows in the matrix");
scanf("%d",&row);
printf("\nEnter the number of columns in the matrix");
scanf("%d",&col);

arr = malloc(row * sizeof(int*));
if (!arr)
{
printf("arr not malloc'd\n");
abort();
}

for(i=0;i<row;i++)
{
arr[i] = malloc(col * sizeof(int));
if (!arr[i])
{
printf("arr[%d] not malloc'd\n", i);
abort();
}

for(j=0;j<col;j++)
{
arr[i][j] = i * j;
}
}

printf("\nThe matrix is\n");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}


printf("\nThe maximum element in the matrix is %d",findMax(arr, row, col));
return 0;
}

在单个 malloc 中执行此操作的任务留给读者作为练习。

关于c - 使用双指针函数 C 语言访问二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35970159/

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