正如问题所暗示的,通常节点的大小是多少:
struct node{
int data;
node* next;
};
如果结构保存数据和下一个节点的地址,指针地址的大小是多少(不是它指向的地址)?如果 next 指向 NULL 有区别吗?
如果我创建了“新节点”,数据(不是指针)在哪里保存、堆栈或堆:
node* linkednode= new node;
如果我创建类节点,答案会改变吗?
正如问题所暗示的,通常节点的大小是多少:
struct node{
int data;
node* next;
};
如果结构保存数据和下一个节点的地址,指针地址的大小是多少(不是它指向的地址)?如果 next 指向 NULL 有区别吗?
如果我创建了“新节点”,数据(不是指针)在哪里保存、堆栈或堆:
node* linkednode= new node;
如果我创建类节点,答案会改变吗?
您可以使用该函数轻松检查那些sizeof()
,不仅将其应用于您的int
变量和指针变量,还应用于节点本身。通常 int
s 和指针在 32 位平台上是 4 个字节,所以这是实现定义的,可能在其他平台上有所不同。的总大小node
可能等于 8,但可能不是由于上面指定的原因和/或数据对齐。
无论成员值是什么,结构的大小都是固定的。在这种情况下,它可能是 8 或 16 字节(取决于您是在 32 位还是 64 位平台上)。如果您检查例如,这将被报告sizeof(node)
。
大小的差异取决于 32 位或 64 位平台,是因为指针。指针在 32 位平台上是 32 位(即 4 个字节),在 64 位平台上是 64 位(即 8 个字节)。该int
类型在所有平台上通常为32 位(4 字节),但在嵌入式系统或大型机上可能不同。
在 64 位平台上它不是 12 字节 (4 + 8) 的原因是对齐。编译器将确保指针处于良好对齐状态以加快对该成员的访问。