2014-04-20 39 views
0

我想在二维数组中打印所有的值。我来自Java,并且我在C中遇到了问题。您如何访问C中两个给定索引处的值?如何在指针的二维数组中打印给定索引处的值?

void PrintArrayByPointer(int *ptrToArray) 
{ 
    int i,j; 

    printf("\nPrint Array By Pointers: \n"); 
    for(i=0; i<ROWS; i++) 
    { 
     for(j=0; j<COLS; j++) 
     { 
      // print the value here 
     } 
     printf("\n"); 
    } 

    return; 
} 
+0

@JohnnyMopp我相信它应该是'我* COLS + j' – texasbruce

+0

这取决于如何您将二维数据存储在一个一维数组中,例如'ptrToArray'。 –

+0

假设数组类型'double'和'ROWS'&'COLS'被声明为全局的.........'printf(“%f”,&ptrToArray [i * ROWS + j])''里面'j- loop'。 – DOOM

回答

3
printf("%d ", ptrToArray[i*COLS + j]); 

我这里假设你的数组存储在行优先的顺序,这是C和C++相当典型。

1

这是一个更好的办法来改变声明下一个:

void PrintArrayByPointer(int **ptrToArray) 

,你可以访问阵列像这样:

printf("Value[%d][%d]=%d", i, j, ptrToArray[i][j]); 

在你的情况,你应该计算在你的元素的位置像这样的阵列:

printf("Value[%d][%d]=%d", i, j, ptrToArray[i*COLS+j]);