나는이 작업을 수행하기 위해 내가 알고있는 모든 조합을 시도한 것처럼 느껴져서 알아낼 수 없습니다. 함수에 대한 포인터로 int**
을 전달하려면 어떻게해야합니까? 검색을 시도했지만 찾을 수 없습니다. 복제본 인 경우 알려 주시면 삭제하겠습니다. 그것은 달리는 것을 시작하고 약간 가치를 들어가기 후에 segfaults.이중 포인터에 대한 포인터로 scanf() 사용
여기 내 코드입니다, 나는 그것이 setMatrix()
함수의 scanf()
라인에 엉망으로 생각 :
#include <stdio.h>
#include <stdlib.h>
// create zero initialized matrix
int** callocMatrix(int rmax, int colmax) {
int **mat = calloc(rmax, sizeof(int*));
for(int i = 0; i < rmax; i++) mat[i] = calloc(colmax, sizeof(int));
return mat;
}
// fill matrix
void setMatrix(int ***mat, int r, int c){
printf("Insert the elements of your matrix:\n");
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
printf("Insert element [%d][%d]: ", i, j);
scanf("%d", mat[i][j]); // problem here??
printf("matrix[%d][%d]: %d\n", i, j, (*mat)[i][j]);
}
}
return;
}
// print matrix
void printMatrix(int ***mat, int r, int c){
for (int i=0; i<r;i++){
for (int j=0; j<c;j++) {
printf("%d ", (*mat)[i][j]);
}
printf("\n");
}
}
int main(int argc, char *argv[]) {
int r = 3, c = 3;
int **mat = callocMatrix(r, c);
setMatrix(&mat, r, c);
printMatrix(&mat, r, c);
}
제목에 '이중 포인터'는 오해의 소지가 있습니다. 당신은'int ** '를 참조하고 있지만'double *'을 말하는 것처럼 들린다. –