初探C/C++ typedef关键字

提问

我知道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

时间: 2024-10-03 13:46:25

初探C/C++ typedef关键字的相关文章

C++那些细节--typedef关键字

一.简介 关于typedef关键字,以前刚刚学C语言的时候,用它来重定义结构体别名.之后的话就是在用函数指针的时候用过一些,然而并不知道这个还有什么用处.今天花点时间总结一下typedef的细节. 在计算机编程语言中用来为复杂的声明定义简单的别名,与宏定义有些差异.简单来说,就是用来给一个复杂变量定义一个好记一点的名字.另外,使用typedef可以简化一些复杂的声明. 二.typedef的用途 1.定义类型别名,而不是简单的替换 typedef的第一个功能是定义类型的别名,比如Int*,比较麻烦

C语言(八)typedef关键字

一.typedef作用简介 我们可以使用typedef关键字为各种数据类型定义一个新名字(别名). #include <stdio.h>   typedef int Integer;    //为int数据类型定义一个别名 typedef unsigned int UInterger; typedef float Float;   int main(){ Integer i=-10; UInterger ui =11; Float f=12.39f; printf("%d %d %.

C语言第四讲,typedef 关键字,以及作用域

C语言第四讲,typedef 关键字,以及作用域 一丶typedef关键字 在C语言中,有typedef 关键字,这个关键字的作用就是允许你为类型定义一个新的名字,也就是 起个别的名字 例如: typedef unsigned int DWORD 那么以后,我们定义unsigned int 类型的变量的时候,这不用敲写 unsigned int 了.直接DWORD即可. 例如: DWORD name = 0; 一般常常用在 结构体的定义,和函数指针上. 例如: typedef struct My

typedef关键字

typedef功能十分强大: typedef声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法. typedef与简单类型: 最简单的用法:typedef int size 这样声明了一个int的同义词size. typedef char line[81]; line text = "content"; typedef与指针: 隐藏指针语法:typedef char* pstr 这样就可以用pstr来声明一个char*类型. typedef与结构体: 定义一个结构体,如下: s

C语言学习入门 (九) typedef 关键字

关键字:typedef 用法:为各种数据类型定义一个新名字(别名) typedef与基本数据类型 typedef int Integer;Integer a= 8: 也可以在别名的基础上再起一个别名 typedef IntegerMyInteger;MyInteger aa = 8; 原来的数据类型也可以正常使用 typedef与指针 typedef char *String;String str = "stone"; typedef与结构体 typedefstructPerson P

C语言学习入门 (八) typedef 关键字

关键字:typedef 用法:为各种数据类型定义一个新名字(别名) typedef与基本数据类型 typedef int Integer;Integer a= 8: 也可以在别名的基础上再起一个别名 typedef IntegerMyInteger;MyInteger aa = 8; 原来的数据类型也可以正常使用 typedef与指针 typedef char *String;String str = "stone"; typedef与结构体 typedefstructPerson P

结构体 typedef关键字

1 结构体 #include <iostream> #include <cstring> using namespace std; void printBook( struct Book book ); struct Book { char title[50]; char author[50]; char subject[100]; int book_id; }; int main() { struct Book book1; struct Book book2; strcpy(

C++ typedef 关键字

typedef :为现有类型创建别名. 书写typedef的声明: 技巧 -如果定义一个变量的语句是合法的,那么在它前面加上typedef就一定合法,并且原来的变量名就成为了别名. 1 #include<iostream> 2 using namespace std; 3 //声明四个函数 4 int Add(int,int); 5 int Sub(int,int); 6 int Mul(int,int); 7 int Div(int,int); 8 //定义指向这类函数的指针类型 9 typ

黑 马 程 序 员_视频学习总结&lt;C语言&gt;----07 static和extern关键字、typedef

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 一.外部函数 外部函数:如果在当前文件中定义的函数允许其他文件访问.调用,就称为外部函数.C语言规定,不允许有同名的外部函数 二.内部函数 内部函数:如果在当前文件中定义的函数不允许其他文件访问.调用,只能在内部使用,就称为内部函数.C语言规定不同的源文件可以有同名的内部函数,并且互不干扰. 三.static.extern与函数的总结 1.在定