当前位置:首页 > 科技 > 正文

typedef结构体指针用法 typedef struct用法

typedef结构体指针用法 typedef struct用法

大家好,如果您还对typedef结构体指针用法不太了解,没有关系,今天就由本站为大家分享typedef结构体指针用法的知识,包括struct用法的问题都会给大家分析到,...

大家好,如果您还对typedef结构体指针用法不太了解,没有关系,今天就由本站为大家分享typedef结构体指针用法的知识,包括struct用法的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

strec在c语言中什么意思

是用户定义的结构体变量名,不是C语言中的关键字。例如:typedefstruct{charnum[10];doubles;}STREC;之后就可以这样用STRECfun(STREC*a,STREC*b,int*n);扩展资料:C语言中的关键字1、char:声明字符型变量或函数2、double:声明双精度变量或函数3、enum:声明枚举类型4、float:声明浮点型变量或函数5、int:声明整型变量或函数6、long:声明长整型变量或函数7、short:声明短整型变量或函数8、signed:声明有符号类型变量或函数9、struct:声明结构体变量或函数10、union:声明联合数据类型11、unsigned:声明无符号类型变量或函数12、void:声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)

二叉树指针类型

先定义一个二叉树节点指针类型 typedefstructBiTree { intdata; structBiTree*left; structBiTree*right; }*Bitree; typedefBiTreeQElemType;/*设队列元素为二叉树的指针类型*/ 那么QElemType就是二叉树节点指针类型了。

C语言中typedef struct什么意思

struct是结构体的关键字,是用来定义结构体的,而typedef是定义自定义类型的关键字。可以定义自定义类型。typedefenum表示定义了一个枚举型的数据结构,typedefstruct也是定义了一种数据结构,这个数据结构包含多个数据项。typedef的用途typedef可以看作是typedefine的缩写,意思就是定义类型,也可以说它是给已有的类型重新定义一个新的别名,而不是产生一个新的类型typedef和宏定义有些类似,但是又有不同:

1.typedef给出的符号名称仅限于对类型,而不是对值,并不是简单的宏替换,可以用作同时声明指针型的多个对象

2.可以使程序参数化,提高程序的移植性

3.可以使表达式更加简洁,如上面的结构体的定义

4.能够为其它复杂的声明定义一个简单的别名

结构体struct前面加typedef和不加typedef的区别

用typedef后,后面的语句的语义就改变了,用typedef定义类型别名,这个别名和类型一样使用,structS{inti;}a,b;定义结构S和S的变量a,btypedefstructS{inti;}a,b;这里除了定义结构S,又起了别名a和b,a和b位置的标识符就都是别名而不是变量a和b也像类型一样用来定义结构变量因为起了别名所以不起结构名也没问题typedefstruct{inti;}a;一般用typedef同时定义结构类型,和结构指针类型typedefstruct_s{inti;}s,*ps;sa;psp=&a;

二叉树的指针类型

先定义一个二叉树节点指针类型typedefstructBiTree{intdata;structBiTree*left;structBiTree*right;}*Bitree;typedefBiTreeQElemType;/*设队列元素为二叉树的指针类型*/那么QElemType就是二叉树节点指针类型了。

如何使用typedef定义的结构体

单纯对typedef的小总结,如下:

C语言中一些关于typedef的归纳

typedef的一般使用:

typedef允许你为各种数据类型定义新名字。

typedef如何声明:

typedef声明的写法和普通的声明基本相同,只是把typedef这个关键字出现在声明的前面。

例如:

cptr_to_chara;

charb='m';

a=&b;

printf("%c\n",*a);//输出m

这个声明把ptr_to_char作为指向字符的指针类型的新名字,声明a是一个指向字符的指针。

这样声明的好处:使用typedef声明类型可以减少使声明变得冗长的危险。

Attention

你应该使用typedef而不是#define来创建新的类型名,因为后者无法正确地处理指针类型。

例如:

d_ptr_to_chara,b;

charc='l';

a=&c;

b='h';

printf("%c\n",*a);//输出l

printf("%c\n",b);//输出h

正确地声明了a,但是b却被声明为一个字符。在定义更为复杂的类型名时,如果函数指针或指向数组的指针,使用typedef更为合适。

typedef在结构体中的使用

我们首先来看一个typedef与struct结合使用的例子:

typedefstructTagNode

{

intage;

charname[20];

char*address;

structTagNode*next;

}Node,*pNode;

上面的代码实际完成了两个操作:

1.定义了一个新的结构体类型

structTagNode

{

intage;

charname[20];

char*address;

structTagNode*next;

}

其中TagNode称为"Tag",即标签,实际上是一个临时名字,struct关键字和TagNode一起,构成了这个结构类型,不论是否有typedef,这个结构都存在。我们可以用structTagNode来定义变量,但要注意,使用TagNode来定义变量是不对的,因为struct和TagNode合在一起才能表示一个结构类型。

2.typedef为这个结构起了新的名字,叫Node和*pNode。因此,我们可以直接使用Node来定义该结构体类型变量,使用pNode来定义指向该结构体类型的指针变量。

例如:

typedefstructTagNode

{

intage;

charname[20];

char*address;

structTagNode*next;

}Node,*pNode;

intmain()

{

Nodelhk={19,"Robert"};

pNodep;

lhk.address=(char*)malloc(80);//表示查找可用连续80个字节内存的空间赋给address存储地址。 p=&lhk;//后续引用结构体成员时,以(*p).age形式引用。

...

}

吐槽一点,回答区不能直接粘贴markdown格式文本,很难受。

归纳于2017.9.9.23.08

关于typedef结构体指针用法到此分享完毕,希望能帮助到您。

最新文章