是否可以创建类型为object的指针而不是类型类或结构?

时间:2011-10-09 01:02:00

标签: c

对不起,如果这个问题措辞不好(请编辑它,如果它会让读者更容易理解我。)

我是oop的新手,正在学习一些C代码。这最后一行代码是什么意思?有没有一种方法可以通过范式(我只是编造这个词)以不同的方式写出来?

typedef struct _Song {
//some members
} Song;

Song * pSong=0;

不应该是:

_Song * pSong=0;

而不是:

Song * pSong=0;

...因为Song是一个对象而_Song是一个结构。

2 个答案:

答案 0 :(得分:5)

Song只不过是struct _Song的别名(这就是开头的typedef意味着什么)。这两者之间完全没有区别,不论其类型如何。

在C ++中,句法差异更加微不足道,因为_Song也是struct _Song的别名。

答案 1 :(得分:3)

typedef为类型创建别名。您可以使用结构定义内联编写它们以获取结构的短名称。 E.g。

typedef int** int_dbl_ptr;

通常情况下,如果您在没有typedef的情况下定义_Song,则必须编写struct _Song*,但使用typedef只需Song*

您还可以使用变量声明创建内联结构,例如

struct foo {int bar; int baz; } a, b, c;

创建一个struct foo类型的结构,并声明三个struct fooabc