할당 할 2D 배열 함수를 정의해야하지만 malloc은 한 번만 호출해야합니다. C 배열에 하나의 malloc을 가진 2D 배열 할당 함수
나는 (-std = C99)을 할당하는 방법을 알고 : 이int (*p)[cols] = malloc (sizeof(*p) * rows);
하지만 함수에서 반환하는 방법을 알아낼 수 없습니다. 함수가 끝나면 (또는 적어도 그 일부) 배열이 존재를 멈추기 때문에 Return은 옵션이 아닙니다. 따라서,이 함수에 배열을 전달하는 옵션 만이 parametr이지만, 위의 솔루션은 선언에서 cols의 수를 정의해야합니다. 심지어 가능할까요?
감사합니다. 사용자에게
덕분에 내가 이런 식으로이 문제를 해결하기 위해 관리 kotlomoy :
...
#define COLS 10
#define ROWS 5
int (*Alloc2D())[COLS]
{
int (*p)[COLS] = malloc(sizeof(*p) * ROWS);
return p;
}
//and this is example how to use it, its not elegant,
//but i was just learning what is possible with C
int main(int argc, char **argv)
{
int (*p)[COLS] = Alloc2D();
for (int i = 0; i < ROWS; i++)
for(int j = 0; j < COLS; j++)
p[i][j] = j;
for (int i = 0; i < ROWS; i++){
for(int j = 0; j < COLS; j++)
printf("%d", p[i][j]);
printf("\n");
}
return 0;
}
당신은 정말'추가해야 c99' 태그 – kotlomoy