c - 如何正确引用 C 中的两个结构?
问题描述
我有一个结构定义为:
typedef struct{
int pages;
}book;
我首先声明一个实例:
book *b=malloc(sizeof(book));
b->pages=35;
然后我将另一本书的指针声明为:
book *a;
a=&b;
调试后我看到结构中的成员a
不相似b
?pages
我得到了in 的错误值a
。
这不应该a
指向 的记忆b
吗?如何a
正确取消引用?抱歉,如果我没有正确理解指针的概念。
解决方案
您在这里所做的是存储b
in的地址a
。现在取消引用时a
,您会得到存储的b
内容,即存储书籍的地址,而不是书籍本身。实际上,我认为您在尝试访问时应该遇到分段错误,a->pages
因为甚至没有分配此内存。
因此,我认为您在这里要做的是创建a
一个指向与您可以通过执行来实现的相同book
结构的指针b
book *a = b;
推荐阅读
- java - Jetty 9 客户端设置 Content-Range 值正常不起作用
- angular - Angular 9:不订阅其他组件?
- python - 将通过列的函数,如果数字大于 0 返回列名,但当为 0 时返回“不可用”
- r - 在 R 中使用 Plotly 绘制显示毫秒的时间戳
- x86-64 - 在这个简单的例子中调用汇编指令做什么?
- node.js - API中的Put方法总是收到空的请求体
- unity3d - 如何检查 Unity 中 NavMeshAgent 的路径是否存在到 NavMesh 上的某个点?
- csv - spark.read.format('csv') 中的数据帧不正确
- java - 使用 Spring Boot 请求 Wrapper Body
- c++ - TAH.h 中的库/函数 - 我的代码中没有响应