如何定义一个指针类型的结构体?
How to define a structure with a pointer-type item?
我有一个 typedef struct
但指针类型命名为 *Ptype
如下所示 -
typedef struct
{
int InputIntArg1;
int InputIntArg2;
char InputCharArg1;
} *Ptype;
我想定义一个项目 (Item1
) 并为其成员分配编号 (InputIntArg1
& InputIntArg2
)。但是,Item1
是一个指针。是否可以不更改 typedef 命名(*Ptype
)并进行正确的声明?
int main(void)
{
Ptype Item1; // <---------- How to modify this line?
Ptype Item2;
Item1.InputIntArg1 = 1;
Item1.InputIntArg2 = 7;
Item2 = &Item1;
printf("Num1 = %d \n", Item2->InputIntArg1);
}
我不会隐藏指向带有 typedef 的结构的指针。
也许使用:
typedef struct
{
int InputIntArg1;
int InputIntArg2;
char InputCharArg1;
} Type;
那你可以这样写:
int main(void)
{
Type Item1;
Type *Item2;
Item1.InputIntArg1 = 1;
Item1.InputIntArg2 = 7;
Item2 = &Item1;
printf("Num1 = %d \n", Item2->InputIntArg1);
}
那么接下来会发生什么:
- Item1 是 Ptype 结构
- Item2 是指向 Ptype 结构的指针
- 赋值
Item2 = &Item1;
Item2 现在指向 Item1 结构
- 您现在正在使用 Item2 指针访问 Item1 结构的值
不,没有办法仅从 Ptype
引用匿名结构类型本身。您能做的最好的事情就是在同一类型定义中添加基类型和指针类型:
typedef struct
{
int InputIntArg1;
int InputIntArg2;
char InputCharArg1;
} type, *Ptype;
然后只需使用 type
作为实际结构,并使用 Ptype
作为指向它的指针。
我有一个 typedef struct
但指针类型命名为 *Ptype
如下所示 -
typedef struct
{
int InputIntArg1;
int InputIntArg2;
char InputCharArg1;
} *Ptype;
我想定义一个项目 (Item1
) 并为其成员分配编号 (InputIntArg1
& InputIntArg2
)。但是,Item1
是一个指针。是否可以不更改 typedef 命名(*Ptype
)并进行正确的声明?
int main(void)
{
Ptype Item1; // <---------- How to modify this line?
Ptype Item2;
Item1.InputIntArg1 = 1;
Item1.InputIntArg2 = 7;
Item2 = &Item1;
printf("Num1 = %d \n", Item2->InputIntArg1);
}
我不会隐藏指向带有 typedef 的结构的指针。
也许使用:
typedef struct
{
int InputIntArg1;
int InputIntArg2;
char InputCharArg1;
} Type;
那你可以这样写:
int main(void)
{
Type Item1;
Type *Item2;
Item1.InputIntArg1 = 1;
Item1.InputIntArg2 = 7;
Item2 = &Item1;
printf("Num1 = %d \n", Item2->InputIntArg1);
}
那么接下来会发生什么:
- Item1 是 Ptype 结构
- Item2 是指向 Ptype 结构的指针
- 赋值
Item2 = &Item1;
Item2 现在指向 Item1 结构 - 您现在正在使用 Item2 指针访问 Item1 结构的值
不,没有办法仅从 Ptype
引用匿名结构类型本身。您能做的最好的事情就是在同一类型定义中添加基类型和指针类型:
typedef struct
{
int InputIntArg1;
int InputIntArg2;
char InputCharArg1;
} type, *Ptype;
然后只需使用 type
作为实际结构,并使用 Ptype
作为指向它的指针。