这种typedef写法到底是什么
typedef struct lnode //链表定义...
{
int data ; //数据域..
struct lnode *next ; //指针域..
} lnode , *linklist ;
我都是这么写的
typedef struct
{
...
} Ds,
怎么现在的写法是这样的
typedef struct lnode
{
...}lnode ,这里第一个lnode是什么意思,名字吗,不象啊,
请指点,谢谢
[解决办法]
typedef XXXXXXXXX lnode,就是用lnode代替typedef后面那一串,类似别名
[解决办法]
struct后面的名字叫做“结构标记”,在你上面这种情况下是可有可无的;
结构标记主要是为了可以给一个结构命名,它就代表了结构体内的那些变量的声明了,所以可以用来
作为一个简写的形式。
[解决办法]
typedef struct lnode //链表定义...
{
int data ; //数据域..
struct lnode *next ; //指针域..
} lnode , *linklist ;
你就可以只用lnode这个表示struct lnode了
这样只是简化了以后的写代码操作,但是阅读起来还是不容易,所以建议声明定义结构体时不要用typedef
[解决办法]
我们老师好象说是没有什么联系的,只是字母一样而已.
[解决办法]
主要是声明变量时方便,
例如:
不用别名就应该这样声明
struct lnode a;
[解决办法]
typedef struct lnode
{
...} lnode ;
实际上是这样的
struct lnode
{
...} ;
typedef lnode lnode
所以第一个lnode是多余的,但是没错
[解决办法]
第二个lnode可以用来替代struct lnode
[解决办法]
typedef struct lnode
{
...}lnode ,这里第一个lnode是什么意思,名字吗,不象啊,
请指点,谢谢
lnode就是表示你定义的这个结构体,其实你写成这样和写成下面的两种方法这样是一样的:
第一种:
typedef struct //把这里原来的名字去掉了
{
...}lnode;
第二种:
typedef struct something //把这里随便取一个名字
{
...}lnode;
以后你用londe来定义对象的时候,都是表示这个对象是上面那种struct类型的对象
如lnode a;
就表示a是一个上面的那种结构体
[解决办法]
区别!
[解决办法]
恩,第一个就是你定义的类型的名字。
第二个是你定义的类型的一个对象。
如果去掉第一个的话,那么你定义的这个类型就只有一个对象,那就是紧跟在定义之后的那个。
这种typedef写法到底是什么,该怎么处理
这种typedef写法到底是什么typedefstructlnode//链表定义...{intdata//数据域..structlnode*next//指针
