首页 > 解决方案 > 如何正确引用 C 中的两个结构?

问题描述

我有一个结构定义为:

typedef struct{
       int pages;
    }book;

我首先声明一个实例:

book *b=malloc(sizeof(book));
b->pages=35;

然后我将另一本书的指针声明为:

book *a;
a=&b;

调试后我看到结构中的成员a不相似bpages我得到了in 的错误值a

这不应该a指向 的记忆b吗?如何a正确取消引用?抱歉,如果我没有正确理解指针的概念。

标签: cpointersreferencestructure

解决方案


您在这里所做的是存储bin的地址a。现在取消引用时a,您会得到存储的b内容,即存储书籍的地址,而不是书籍本身。实际上,我认为您在尝试访问时应该遇到分段错误,a->pages因为甚至没有分配此内存。

因此,我认为您在这里要做的是创建a一个指向与您可以通过执行来实现的相同book结构的指针b

book *a = b;

推荐阅读