내가 그것을/더 나은 그래서C 변수 크기의 2 차원 배열
// OLD CODE
int **map;
map = calloc(number, sizeof(int *));
if (!(map)) {
free(map);
return 1;
}
for (int i = 0; i < number; i++) {
map[i] = calloc(number, sizeof(int));
if (!(map[i])) {
while (--i >= 0) {
free(map[i]);
}
free(map);
return 1;
}
}
// NEW CODE
int (*map)[number] = malloc(sizeof (int[number][number]));
if (!(map)){
free(map);
return 1;
}
을 다음과 같이 2-D 변수 배열 할당을 변경 시도하고 더 쉽게 읽을 수 있도록 내 코드를 리팩토링하기 위해 노력하고있어 기능 통과 문제는지도를 사용하는 모든 함수가 int **map
이고 IDE에서 알려준 것과 같이지도 선언을 변경함으로써 incorrect type int[]* instead of int**
int**
대신 무엇을 사용해야합니까? 함수 선언에 int[]* map
을 사용하는 경우 can't resolve variable map
'형 FUNC (INT의 N, INT (* MAP) [N]);''FUNC (번호,지도)를 호출,' – BLUEPIXY
은 자신에게 호의를 수행하고 단지 플랫 배열을 만든 다음 배열을 기준으로 행을 참조하십시오 [y * width + x] = value; –
@MalcolmMcLean 저는 그것에 대해 생각했습니다.지도의 크기를 절반으로 할당 할 수있는 방법이 있으며 색인 순서에 대해 걱정할 필요가 없습니까? 내지도 position [i] [j]와 [j] [i]는 항상 같은 값을 갖지만, i와 j의 순서에 대해 걱정할 필요가 없도록 필요한 크기를 두 배 할당합니다. –