2014-12-01 167 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

請閱讀一些書籍 – 2014-12-01 21:06:02

+0

只需使用指針,指針可指向一個或多個值,例如數組。 – mukunda 2014-12-01 21:07:40

回答

2

你創建一個指向某個類的物體,像這樣的列表的元素:

SomeClass *ptr = new SomeClass(); 

SomeClass a; 
SomeClass *ptr = &a; 

要在您的結構中定義數組,請在您的結構中進行:

int arr[32]; 

請注意這是一個大小不等的數組。如果你想通過動態大小 聲明數組:

int * arr; 

你的結構裏面,然後在某個時候它指向 數組對象:

obj.arr = new int[SIZE]; 

你必須調用delete[]在上面的情況下,完成數組。 也就是說它可能比較棘手(請參閱here)有內部管理動態內存的類, 您可能更喜歡固定大小的數組。

待辦事項構件明智數組元素代替本的副本:

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

他確實修改了'入口'參數,所以他需要在當前代碼中傳遞一個引用。 – Slava 2014-12-01 21:16:00

+0

@Slava:好的,我現在看到它,我會修改 – 2014-12-01 21:16:45

2

數組是各種各樣的指針已經。在C/C++,如果我有一個數組:

int arr[10] 

然後數組訪問

arr[2]; 

是解除引用的指針訪問

*(arr + 2); 

只是另一種方式的陣列可以被傳遞到一個指針

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

所以,如果你c姑娘拿着一個數組,其壽命管理的其他地方,你需要的是一個指針:

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

現在,如果你希望你的代碼的類來實際管理陣列的壽命,或值複製到類,你將不得不做一些額外的工作。