结构和结构指针的大小:C ++

时间:2017-09-13 16:55:05

标签: c++ pointers struct

我的结构如下所示

struct Node
{
int data;
Node* next; 
}

以及指向此Node结构的指针数组

struct Node *list[10];
list[0]=(struct Node*)mal?loc(sizeof(struct Node));

这里在将内存分配给列表的第一个元素时,我真的需要malloc(sizeof(struct Node))吗?我有这个疑问,因为它提供了一个结构的大小,我需要的是结构的大小,以存储其地址(struture指针的大小)小于4B?请解释一下。

2 个答案:

答案 0 :(得分:3)

  

我真的需要malloc(sizeof(struct Node))吗?

是。这是对的。

list[0]的类型为Node*。它可以指向Node类型的对象。因此,您需要分配足够的内存来保存Node类型的对象,以便能够指向list[0]。使用sizeof(struct Node)作为malloc的参数可以为您提供。

但是,您可以更改一些事项,使您的程序更像C ++程序,而不像C程序。

  1. 您无需使用struct Node。您只能使用Node
  2. 请勿使用malloc。使用new运营商。
  3. Node *list[10];
    list[0]= new Node;
    

答案 1 :(得分:0)

struct Node *list[10];
list[0]=(struct Node*)mal?loc(sizeof(struct Node));

list[0]将存储一个指向某个将存储Node的内存的指针。你使用malloc来分配内存,所以你必须告诉malloc多少内存你需要分配。返回malloc给你一个指向那个分配内存的指针。