에서 int **를 읽으므로 일반 ADT를 정의하려고합니다. 난은 다음과 같습니다 구조체를 가지고 :C : void **
struct grid_type{
void* table;
int startX, startY, endX, endY, xDim, yDim;
};
당신은 내가 다양한 데이터 유형을 저장할 수 있어야 무효 포인터를 볼 수 있습니다. 이 함수에 의해 리턴 된 INT ** (이차원 배열)를 가리 키려고 인스턴스 메신저 용 :
int** CreateInt(int xDim, int yDim){
int** table = NULL;
int i, j;
table = (int**)malloc(xDim*sizeof(int*));
if (table == NULL){
puts("failed malloc");
exit(1);
}
for (i = 0; i < xDim; i++){
table[i] = (int*)malloc(yDim*sizeof(int));
if (table[i] == NULL){
puts("failed malloc");
exit(1);
}
for (j = 0; j < yDim; j++){
table[i][j] = 1;
}
}
return table;
}
아주 기본적인 기능. 그래서 무엇을하지 못하면 나중에이 배열에서 읽는 것이고, 어떤 데이터에도 액세스 할 수없는 것처럼 보입니다. 노력하는 방법 메신저 입니다 :
void PrintInt(grid* grid){
int i, j, add = 0;
for (i = 0; i < grid->xDim; i++){
for (j = 0; j < grid->yDim; j++){
add = i*(grid->xDim-1) + j;
printf("%d ", *((int*)grid->table+add)); <--- PROBLEM
}
printf("\n");
}
}
을하고이 모든 주에서 발생하는 방법입니다, 어떤 아이디어
grid1 = CreateGrid((*CreateInt), xDim, yDim, startX, startY, endX, endY);
PrintInt(grid1);
어떤 메신저가 점점 100 % jibrish입니까?
사용중인 언어로 태그를 지정하십시오. – geoffspear
'int ** '는 2 차원 배열이 아닙니다. 또한'void *'(이것은'grid-> table'과'malloc()'의 리턴 타입을 포함하지 않는다). –
'int ** arr = (int **) (grid-> table)'을 시도해 본 다음 그 뒤에'arr'을 사용 했습니까? – Kakadu