我知道typedef是类型别名的意思,也知道结构体如何定义。
但下面的代码:
typedef struct node{
struct node*lchild;
char data;
struct node*rchild;
}bitnode,*bitree;
那这样结构体后面的是对象还是别名呢?我感觉应该是对象,但typedef又无从说起。
然后接着有
bitree createtree(){
……
}
很明显bitree是一种类型,但他又是一个指针,我能说他就是指向这个结构体的对象的指针么?
其实谭老的那本C语言教材,讲得很明白了。
bitnode是类型名,等同于struct node。在C++里,bitnode与node是完全一样的类型名。
bitree也是类型名,等同于struct node*,就相当于你给int* 类型名起了一个别名一样。
照你这么说,node等同于bitnode,他何必要多定义一个。况且bitree也可以用node*来表达,并不很麻烦。
在C语言里,比如你定义一个结构体:
struct Stu
{
int id;
float score;
};
那么在你定义变量的时候,一定要带上struct才行,即:
struct Stu stu;
但是在C++里,跟class一样,不用带struct也行了,即:
Stu stu;
那么在C语言里为了少写一个struct,就要借助于typedef:
typedef struct
{
int id;
float score;
}Stu;这样定义变量的时候,就可以直接用Stu;
bittree和node*就是一个意思,改个定义确实没什么意思,而且我也觉得还不如用node*,这样更能让人理解为它是一个指针。
谢谢!
#include<iostream>
#include<string>
using namespace std;
typedef struct node{
struct node*lchild;
char data;
struct node*rchild;
}bitnode,*bitree;
int main()
{
bitnode charnode;
bitree pnode = &charnode;
pnode->data='a';
cout<<charnode.data<<endl;
}
输出
a
初探C/C++ typedef关键字,布布扣,bubuko.com
原文:http://blog.csdn.net/wangxiaobupt/article/details/36875385