Я пытаюсь найти максимум всех значений в 2D-массиве, доступ к которому осуществляется из функции C с помощью двойного указателя. Когда я запускаю код, он просто завершается, возвращая любое значение вызывающей функции.
Я попытался изменить код для печати всех значений, чтобы выяснить проблему, и обнаружил, что он печатает только 1 и 2 для следующих образцов данных в качестве входных данных. Для запуска примера кода я указал строку = 2, столбец = 2 и значения = 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;
}
int **a
не настоящий 2D-массив.int **a
--›int (*a)[10]
- person BLUEPIXY   schedule 13.03.2016arr
и в результате получаете к нему неправильный доступ. Я удивлен, что вы не получаете ошибку сегментации. Удалите приведение и вместо этого исправьте свои объявления, чтобы объявить правильные типы указателей. - person Tom Karzes   schedule 13.03.2016main
? - person Martin Zabel   schedule 13.03.2016