通过将指针传递给函数来输出矩阵的值

时间:2015-10-13 18:27:07

标签: c function

我正在尝试发送矩阵指针以便打印值。但是,我的下面的代码打印了一些长数字,所以我假设它打印地址而不是!如何在传递指针之后打印矩阵的值?

#include <stdio.h>
#include <string.h>
#include <math.h>

void printing(int *edge);
void main(){

int N=3;
int i,j;

int *edge[N]; 
for (i = 0; i < N; i++){
    *(edge+i) = (int *)malloc(N * sizeof(int));
}

srand(0);
for(i = 0; i < N; i++){
    for(j = 0; j < N; j++){
        if(i == j)
            *(*(edge+i)+j) = 0;
        else
            *(*(edge+i)+j) = 1; //rand() % 10;  
    }
}

printing(edge); // Pass the pointer of the matrix


}


void printing(int *edge){

int i,j; 
int N= 3;   
for( i = 0; i < N; i++){
   for(j = 0; j < N; j++){
       printf("%d \t", ((edge+i)+j)); // I think I have to do something in this line.
   }
       printf("\n");
}

}

1 个答案:

答案 0 :(得分:2)

printing的参数类型不正确。它应该是int *edge[]。然后,当您打印时,请使用*(*(edge+i)+j),或者更好,edge[i][j]

结果:

void printing(int *edge[]){
    int i,j; 
    int N = 3;   
    for( i = 0; i < N; i++){
       for(j = 0; j < N; j++){
           printf("%d \t", edge[i][j]);
       }
       printf("\n");
    }
}

此外,请务必#include <stdlib.h>,因为mallocsrand需要{。}}。