我有一个像
struct T {
int *baseofint
}Tstruct, *pTstruct;
int one;
pTstruct pointer;
现在我想定义
one = pointer.baseofint; //got filled with an integer;
error message: **operator is not equal to operand**
我也试过
one = *(pointer.baseofint);
error message:**operand of * is no pointer*
也许有人可以帮忙,谢谢。
最佳答案
首先,我不认为下面的代码是你认为的那样:
struct T {
int *baseofint
}Tstruct, *pTstruct;
int one;
pTstruct pointer;
您正在声明一个结构类型
struct T
,并创建一个名为 Tstruct
的实例和一个名为 pTstruct
的指向它的指针。但那些不是您正在创建的类型,它们是变量。这也使 pTstruct pointer;
成为无效代码。你可能想要的是一个 typedef:typedef struct T {
int *baseofint;
} Tstruct, *pTstruct;
...使
Tstruct
等同于 struct T
,而 pTstruct
等同于 struct T *
。至于访问和取消引用
baseofint
字段,根据您是否通过指针访问它而略有不同……但方法如下:Tstruct ts; // a Tstruct instance
pTstruct pts = &ts; // a pTstruct -- being pointed at ts
/* ...some code that points ts.baseofint at
* an int or array of int goes here... */
/* with * operator... */
int one = *(ts.baseofint); // via struct, eg. a Tstruct
int oneb = *(pts->baseofint); // via pointer, eg. a pTstruct
/* with array brackets... */
int onec = ts.baseofint[0]; // via Tstruct
int oned = pts->baseofint[0]; // via pTstruct
关于c - 分配结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8014104/