c - 链表节点的大小

标签 c linked-list sizeof

对于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/

相关文章:

c - 从文件读取到 C 中的 int 缓冲区

c++ - 比较有符号比无符号整数更快

C++ - 使用链表和一次执行一个函数的类的程序

c++ - Sizeof() 函数不适用于常量数组 C++

c - sizeof() 如何处理取消引用?

c - 0-1 Knapsack 的蛮力实现

c - 链表: Moving a node from one list to another

c - C 结构类型定义中无用的变量名

c - 查找数组大小时出错

c++ - 求解 cos() 和 sin() 内部的变量