Sorry if this question is poorly worded (please edit it if it will make it easier for readers to understand me.)
I'm new to oop and was learning some C code. What does this last line of code mean? Is there a way to paradigmatically(I just made up this word) write it differently?
typedef struct _Song {
//some members
} Song;
Song * pSong=0;
开发者_开发问答
Shouldn't it be:
_Song * pSong=0;
Instead of:
Song * pSong=0;
...since Song is an object and _Song is a structure.
Song
is nothing more than an alias for struct _Song
(that's what the typedef
at the beginning means). There is absolutely no difference between the two, wrt their type.
In C++, the syntactic difference is even more marginal, since _Song
is also an alias for struct _Song
.
A typedef
creates an alias for a type. You can write them inline with struct definitions to get short names for a struct. E.g.
typedef int** int_dbl_ptr;
Normally, if you defined _Song
without a typedef, you'd have to write struct _Song*
, but with the typedef it's just Song*
.
You can also create structs inline with variable declarations, e.g.
struct foo {int bar; int baz; } a, b, c;
creates a struct of type struct foo
and declares three struct foo
s, a
, b
, and c
.
精彩评论