我将实现一个结构中带有位字段的单链表程序,如下所示:
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/