如果我想在C中定义一个struct我写Ç - 这是什么代码行的意思(约结构)
typedef struct ObjectP
{
some code
}
,这是合法的,但对于这行代码?
typedef struct Object* ObjectP
{
some code
}
为什么有上线typedef结构对象* ObjectP
如果我想在C中定义一个struct我写Ç - 这是什么代码行的意思(约结构)
typedef struct ObjectP
{
some code
}
,这是合法的,但对于这行代码?
typedef struct Object* ObjectP
{
some code
}
为什么有上线typedef结构对象* ObjectP
一个语法错误,这不是你如何使用typedef
与结构。你必须把类型别名结构后,像
typedef struct Object
{
...
} Object;
如果你想多类型的别名,你只需将它们添加到随后结束,如
typedef struct Object
{
...
} Object, *ObjectP;
或者你分开的定义:
struct Object
{
...
};
typedef struct Object Object;
typedef struct Object *ObjectP;
您正在使用错误的语法typedef
指针struct
。
用途:
typedef struct Object
{
some code
}
*ObjectP;
现在你可以使用ObjectP
定义指针这个struct
这样:ObjectP ptr1_struct, ptr2_struct;
。
这也不正确。 –
@JohnBode:我很抱歉那个'*',谢谢指出。我纠正了我的答案 –
一个结构定义的语法是
structidentifieropt{struct-declaration-list}
可选标识符是该结构标签;它是可以引用结构类型的名称。例如:
struct foo { int x; int y; double z; };
foo
是该结构类型的标记;然后我可以使用struct foo
任何地方,我需要一个类型名称:
struct foo bar;
struct foo *fptr;
我能结构定义和对象的声明相结合的一个:
struct foo { int x; int y; double z; } bar, *fptr;
如果我想为指针创建typedef名struct foo
,我做如下:
typedef struct foo { int x; int y; double z} *FooP;
FooP
现在是struct foo *
的代名词:
FooP myptr;
相当于
struct foo { int x; int y; double z; } *myptr;
结构定义应与“结束;“。typedef不是结构定义的一部分,它是一个重命名约定。
你认为第二段代码的含义是什么? – elyashiv
我不知道,我们有一个头文件,我们必须实现 ,并有一个结构,我们必须实现,它是这个结构 ** typedef结构对象* ObjectP ** – KaramJaber