C语言结构体typedef struct详解

C语言结构体typedef struct详解1、typedef关键字C语言提供了typedef关键字,您可以使用它来为类型取一个新的名字。下面的实例为单字节数字定义了一个术语BYTE:typedefunsignedcharBYTE;在这个类型定义之后,标识符BYTE可作为类型unsignedchar的缩写,例如:BYTEb1,b2;typedef相当于给unsignedchar起…

 

1、typedef关键字

C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。下面的实例为单字节数字定义了一个术语 BYTE

typedef unsigned char BYTE;

在这个类型定义之后,标识符 BYTE 可作为类型 unsigned char 的缩写,例如:

BYTE  b1, b2;

typedef相当于给unsigned char起了一个别名。

typedef vs #define

#define 是 C 指令,用于为各种数据类型定义别名,与 typedef 类似,但是它们有以下几点不同:

  • typedef 仅限于为类型定义符号名称,#define 不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义 1 为 ONE。

  • typedef 是由编译器执行解释的,#define 语句是由预编译器进行处理的。

2、typedef struct

typedef struct的使用方法有很多种,这里只介绍最标准的一种使用方法:

声明:

    typedef struct Student
    {
        int a;
    }Stu;

使用:

        Stu xiaoming;

区别:

若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n; 若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n; 区别就在于使用时,是否可以省去struct这个关键字。

但是在C++中又会造成区别:

在c++中如果用typedef的话:

struct Student
{
int a;
}stu1;//stu1是一个变量
typedef struct Student2
{
int a;
}stu2;//stu2是一个结构体类型

stu1是一个变量,使用时可以直接访问stu1.a stu2是一个结构体类型,使用时则必须先 stu2 s2

3、结构体指针

定义:

    typedef struct Student
    {
        int a;
    }Stu,*pStu;

使用:

pStu exam1;
Stu exam2;
exam1 = exam2;
exam2.a = 1;
printf("%d",exam1->a);//输出为1

或者:

Stu exam[4];
pStu p;
p = exam;
p +=2;//等价于p = exam[1]

等价于:

    typedef struct Student
    {
        int a;
    }Stu;
    
Stu *exam1;
Stu exam2;
exam1 = exam2;
exam2.a = 1;
printf("%d",exam1->a);//输出为1

今天的文章C语言结构体typedef struct详解分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/24337.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注