변수를 개수로 하는 이차원 배열 만드는법.
한란
2023.04.01
질문 제목 : 변수를 개수로 하는이차원 배열 만드는법.int *k = (int*)malloc(sizeof(int)*n);
?? k[n]은 이런식으로 만들잖아요. 그런데 k[n][m]을 만들고 싶네요. 어떻게 만들어야 할까요?질문 내용 :
글들 봤는데 좀 이해가 안가네요..
-
도손
밑에분답변처럼 sizeofof(...)*n*m 으로하시는 방법도 있으나..이는 최종값 m이 실제 고정값으로 사용할 수 있을때 정확히 동작시킬수있다는 단점이 있어 m이 가변일 경우는 추천하지는 않으며 만일 m이 고정적이라면 int (*ptTest)[m]의형태로 포인터를 받아 정확한 동작을 시킬 수 있습니다
-
가림
n 은 그렇다고 쳐도 m까지도 고정된 값이 아닐 경우 k는 땁포인터가 되어야하며
n 만큼 반복시키며 k[i] 에 다시 m 만큼 할당해야 됩니다.
사용시에는 배열과 동일한 형식으로도 사용가능하며 장단점이 살짝 틀리게 있긴합니다.
메모리 반환시에도 먼저 n만큼 반복시켜 k[i]를 먼저 반환해준후 k를 반환해야 합니다.