gpt4 book ai didi

c - 分配结构

转载 作者:行者123 更新时间:2023-12-04 09:36:02 25 4
gpt4 key购买 nike

我有一个像

这样的结构
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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com