当前位置:主页 > 生活知识 >

typedef用法(如何使用typedef定义的结构体)

  • 生活知识
  • 2023-09-10 09:20
  • 来源:www.renliuw.cn
  • 生活知识

单纯对typedef的小,如下

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

typedef 的一般使用

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

typedef 如何声明

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

例如

cptr_to_char a;

char b = 'm';

a = &b;

printf("%cn",a);//输出m

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

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

Attention

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

例如

d _ptr_to_char a,b;

char c = 'l';

a = &c;

b = 'h';

printf("%cn",a);//输出l

printf("%cn",b);//输出h

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

typedef 在结构体中的使用

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

typedef struct TagNode

{

int age;

char name[20];

char address;

struct TagNode next;

}Node,pNode;

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

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

struct TagNode

{

int age;

char name[20];

char address;

struct TagNode next;

}

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

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

例如

typedef struct TagNode

{

int age;

char name[20];

char address;

struct TagNode next;

}Node,pNode;

int main()

{

Node lhk = {19,"Robert"};

pNode p;

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

...

}

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

归纳于2017.9.9.23.08

无痛人流