2014-12-01 2 views
-1

이전 및 다음 요소를 가리키는 포인터 목록을 만들려고합니다. 각 요소에 배열이 포함되기를 바랍니다. 어떻게 수업이 정의 및/또는 당신은이 같은 일부 클래스 객체에 대한 포인터를 만들C++ 어떻게 포인터가 배열을 가리 킵니까?

class codes { 
    public: 
     int code[]; 
     codes* next; 
     codes* previous; 
};//codes 

void addtolist(codes* & entrance, int k[]) { 
    codes* c; 
    c = new codes; 
    c->code[] = k; 
    c->next = entrance; 
    if(c->next != NULL){ 
     c->next->previous=c; 
    }//if 
    c->previous = NULL; 
    entrance = c; 
}//addtolist 
+0

일부 도서를 읽어주세요 –

+0

포인터 만 사용하면 포인터가 하나 이상의 값을 가리킬 수 있습니다. 배열. – mukunda

답변

2

리스트의 요소 배열을 추가하려면 :

SomeClass *ptr = new SomeClass(); 

또는

SomeClass a; 
SomeClass *ptr = &a; 

구조 내부에 배열을 정의하려면 구조 내부에서 수행하십시오.

int arr[32]; 

크기가 정돈 된 배열입니다. 동적 크기 선언과 배열을 원하는 경우 : 당신은에 delete[]를 호출해야합니다

obj.arr = new int[SIZE]; 

:

int * arr; 
당신의 구조 내부

하고 어떤 점에서 만들 그것은 배열 객체를 가리 위의 경우 배열로 작업 할 때. 동적 메모리를 내부적으로 관리하는 클래스를 사용하는 것이 까다로울 수 있습니다 (here 참조). 고정 크기의 배열을 선호 할 수 있습니다. 대신이의 배열 요소의

마 구성원 현명한 사본 :

c->code[] = k; // You can't assign like this since code is not a pointer 
+0

그는'entrance' 매개 변수를 수정하여 현재 코드에서 참조를 전달해야합니다. – Slava

+0

@Slava : 알았어. 이제 수정 하겠어. –

2

배열이 이미 종류의 포인터입니다. 내가 배열이있는 경우 C/C++에서 : 다음

int arr[10] 

배열 액세스를

arr[2]; 

는 배열이 전달 될 수있는 역 참조 포인터 액세스

*(arr + 2); 

을의 또 다른 방법입니다 포인터

int getSecond(int* a) { 
    return a[2]; 
} 
getSecond(arr); 

아가씨는 누구의 수명이 다른 곳에서 관리되는 배열을 들고, 당신이 필요로하는 모든 포인터입니다 : 지금 당신은 당신의 코드 클래스는 실제로 배열의 수명을 관리하거나 클래스에 값을 복사 할 경우

class codes { 
    public: 
     int* code; 
     codes* next; 
     codes* previous; 
};//codes 

, 추가 작업을해야 할 것입니다.

관련 문제