c - 在 C 中动态分配的结构中使用位域可以吗?

标签 c struct linked-list malloc bit-fields

我将实现一个结构中带有位字段的单链表程序,如下所示:

typedef struct large
{
    unsigned number :4;
    struct large *next;
} large;

int main()
{
    large *g;
    g=(large *)malloc(sizeof(large));

    g->number=15;
    printf("%d",g->number);

    return 0;
}
<小时/>

上面的程序工作正常,但我在GeeksForGeeks中读到,

We cannot have pointers to bit field members as they may not start at a byte boundary.

如果我进一步编码实现链表会出现问题吗?

最佳答案

程序中的指针g是指向动态分配内存的结构变量的指针。

g->number 不是成员 number 的地址,而是它的值。

你不能有像这样的指针

unsigned char *ptr=&(g->number);

您应该收到类似cannot take address of bit-field的错误

关于c - 在 C 中动态分配的结构中使用位域可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46119274/

相关文章:

C 在 main 中调用打印函数

c - 链表 - Free() 节点导致程序崩溃

c - 将用户输入存储到链表中 - C

c - -fomit-frame-pointer *总是*省略 fp 吗?

c - 自己实现的 "strcpy"(C) 不起作用!冲突的类型。为什么?

c++ - 数组与结构 C++

c++ - 无法弄清楚为什么我的双向链表分崩离析,我可以使用一些指导

c - 有没有办法控制宏扩展顺序

c - 我想学习编写 3D 游戏代码。我该如何开始?

c - 结构指针操作