对不起,如果这个问题措辞不好(请编辑它,如果它会让读者更容易理解我。)
我是oop的新手,正在学习一些C代码。这最后一行代码是什么意思?有没有一种方法可以通过范式(我只是编造这个词)以不同的方式写出来?
typedef struct _Song {
//some members
} Song;
Song * pSong=0;
不应该是:
_Song * pSong=0;
而不是:
Song * pSong=0;
...因为Song是一个对象而_Song是一个结构。
答案 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 foo
,a
,b
和c
。