关于此主题有许多线程,其中一些有帮助,但我需要一些特定的帮助。C结构和指针混淆
说我们有这样的代码:
typedef struct A {
int b;
struct other* c;
} A_t;
struct other {
int d;
}
所以,我们已经有了一个结构称为A,含一个int(称为B)和指针类型 “其他”,名为c的结构。
现在说以后我们有:
A* pA;
我们假设点A.
我的第一个问题是正确分配的实例,我如何访问“d”?我已经试过:
int z = (*pA).(*c).d;
但我得到一个编译错误关于“(”令牌之前应有一个标识符
我的第二个问题是,什么是指数据类型为A VS之间的差异。 。A_t?换句话说,我们将结构定义为类型A,但在定义的末尾有“A_t”部分。我对它的内容有了很多模糊的描述,但我没有明白,好像我们只是随机决定用两个不同的名字来调用相同的数据类型,为了好玩。
注意,上面的代码并不是直接来自我的项目,所以我不能保证它会产生我遇到的同样的问题。这是一个任务,我想避免发布我的实际代码,所以我只写了一些更简单但相似的东西。
我很感激!
'INT Z = PA-> C-> d;''型A'未C. – BLUEPIXY 2014-11-20 19:14:47
定义这一行:A * pA;会引发编译器错误。也许你的意思是:A_t pMyA; - 或 - struct A pMyA;注意,你不应该使用struct的名字作为结构 – user3629249 2014-11-20 22:45:51
的一个实例的名字,你可以尝试:int z =(pMyA-> c) - > d; (请参阅我之前关于A结构实例名称的评论。 – user3629249 2014-11-20 22:50:36