이중포인터 동적 할당
라이브라
질문 제목 : 이중포인터 동적 할당이중포인터 동적 할당 방법질문 내용 :
a객체에 대한 이중포인터를max_value 만큼 동적 할당하고 싶습니다.
두 가지 선언 방식의 차이점과, 동적 메모리 할당의 두가지 방법의 차이를 알고 싶어요.
#define max_value 10
1 -- a **var; or
2 -- a *var[];
3-- var = (a *) new a[max_value]; or
4-- var = new a*[max_value];
for(int i= 0; i max_value; i++)
{
var[i] = new a();
}
그럼 수고하세욥~
-
해솔
1번으로 정의할 경우, 4번 형태만 가능합니다.
3번은 A *var; 로 정의되었을 때, 사용하는 방법입니다.
A *var = new A[MAX_VALUE]; // (A *) 는 마나 있으나 합니다.
A *var[] 에서 배열의 크기를 동적으로 할당하는 방법이 1 번 형식입니다.
A **var = new A*[MAX_VALUE];
A *var[] = { new A, new A, new A }; 형태로 하면 됩니다.
A *var[]; 는 오류입니다. -
뭘봐요
답변 감사해요. 좀 더 질문하면요. 1번으로 선언할 경우 4번만 가능한지요??
3번은 문법적으로 틀린건가요?? 그리고,
A *var[] 선언하고 포인터 배열의 크기는 동적으로 할당하고 싶을때는 어떤 방법이 가능할까요?
위에 질문에서 2번으로 선언했을 때의 초기화 방법이요~ -
Glisten
A *var[]; 에서 [] 안을 비워두려면 초기화를 해야 합니다.
1 번 형태로 정의하신다면, 4 번처럼
var = new A*[MAX_VALUE]; // A* 를 MAX_VALUE 할당
로 하시면 됩니다.