Я пытаюсь найти максимум всех значений в 2D-массиве, доступ к которому осуществляется с помощью функции C с помощью двойного указателя. Когда я запускаю код, он просто заканчивается, возвращая любое значение функции вызывающего.Доступ к двумерному массиву с использованием двойного указателя на функцию языка C
Я попытался изменить код, чтобы распечатать все значения, чтобы узнать проблему, и обнаружил, что он печатает только 1 и 2 для следующих данных образца в качестве входных данных. Для прогона кода кода я предоставил строку = 2, col = 2 и значения = 1,2,3,4
Пожалуйста, дайте мне знать, почему? Также, если вы сомневаетесь, неясно, скажите это. У меня был трудный день, поэтому, возможно, я не мог объяснить лучше.
Существует несколько ограничений к коду: 1. Функции Подписи (интермедиат ** а, ИНТ м, 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;
}
'int ** a' не является реальным 2D-массивом. 'int ** a' ->' int (* a) [10] ' – BLUEPIXY
' int arr [10] [10] l' -> 'int ** arr;' ... 'arr = malloc (строка * sizeof (int *)); for (int i = 0; i
BLUEPIXY
Вы выбрасываете' arr' и как в результате вы получите доступ к нему некорректно. Я удивлен, что вы не получаете ошибку сегментации. Удалите бросок и вместо этого зафиксируйте свои объявления, чтобы объявить правильные типы указателей. –