1

正如问题所暗示的,通常节点的大小是多少:

struct node{
   int data;
   node* next;
};

如果结构保存数据和下一个节点的地址,指针地址的大小是多少(不是它指向的地址)?如果 next 指向 NULL 有区别吗?

如果我创建了“新节点”,数据(不是指针)在哪里保存、堆栈或堆:

node* linkednode= new node;

如果我创建类节​​点,答案会改变吗?

4

2 回答 2

1

您可以使用该函数轻松检查那些sizeof(),不仅将其应用于您的int变量和指针变量,还应用于节点本身。通常 ints 和指针在 32 位平台上是 4 个字节,所以这是实现定义的,可能在其他平台上有所不同。的总大小node可能等于 8,但可能不是由于上面指定的原因和/或数据对齐。

于 2013-10-02T08:07:21.237 回答
0

无论成员值是什么,结构的大小都是固定的。在这种情况下,它可能是 8 或 16 字节(取决于您是在 32 位还是 64 位平台上)。如果您检查例如,这将被报告sizeof(node)

大小的差异取决于 32 位或 64 位平台,是因为指针。指针在 32 位平台上是 32 位(即 4 个字节),在 64 位平台上是 64 位(即 8 个字节)。该int类型在所有平台上通常为32 位(4 字节),但在嵌入式系统或大型机上可能不同。

在 64 位平台上它不是 12 字节 (4 + 8) 的原因是对齐。编译器将确保指针处于良好对齐状态以加快对该成员的访问。

于 2013-10-02T08:04:48.227 回答