对于sizeof运算符如何计算链表中一个节点的大小,我发现这有点棘手和递归。例如,我将以下结构作为列表中的一个节点:
struct ll_core
{
char c_ll;
struct ll_core * next;
};
printf("size of struct ll_core = %d\n\n",sizeof(struct ll_core));
它给了我一个答案8。现在如何确定大小8,因为要添加单个结构元素的大小,它还会遇到相同的结构ll_core。因此,它是计算大小时的一种循环或递归。请原谅,如果这样想的话,让我知道我是否想念任何基本的东西。
最佳答案
假设您正在32位计算机上运行代码,则指针的大小将为4个字节。由于结构将在单词边界上对齐,因此将填充3个字节,因此大小为8个字节。
这种结构实际上就像
struct ll_core{
char c_11:
char const byte[3]; //padded bytes for alignment reasons
struct ll_core *next;
};
关于c - 链表节点的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16768733/