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

现在,如果你希望你的代码的类来实际管理阵列的寿命,或值复制到类,你将不得不做一些额外的工作。