2015-03-08 88 views
1

它接受指針的方法的指針作爲參數使用指針的指針變量在C

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; 
} 

我只是想找出一個2d數組中的最大元素使用一個函數,該函數將指針指向數組的指針。 此代碼工作正常,但我正在尋找更好的方法...

+0

什麼更好的辦法,哈哈? – Ulterior 2015-03-08 20:13:45

+0

在避免在主函數中完成單指針分配... – 2015-03-10 14:16:35

回答

3
#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; 
}