📜  typedef c struct - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:35:23.636000             🧑  作者: Mango

Typedef C struct 介绍

在C语言中,typedef可以用来为一个数据类型定义一个新的名称。而struct则用来定义一个包含多个成员变量的数据类型。当我们把这两者结合起来,通过typedef定义一个新类型,可以更方便地使用这个结构体,而无需每次使用时都写出完整的struct定义。

语法

使用typedef来定义一个新类型时,可以将结构体定义写在一行:

typedef struct {
    int id;
    char name[20];
    float salary;
} Employee;

或者先定义结构体再用typedef定义新类型:

struct employee {
    int id;
    char name[20];
    float salary;
};
typedef struct employee Employee;
应用场景

通过typedef定义的新类型,我们可以像使用普通的数据类型一样使用它。这在以下场景中特别方便:

1. 定义函数返回类型

我们可以将结构体作为函数的返回值类型,这样函数的调用者可以方便地使用返回的结构体。

Employee get_employee(int id) {
    Employee emp;
    // some code to fetch employee details
    return emp;
}

2. 定义变量类型

使用typedef定义的结构体类型,可以用于定义变量。

Employee emp1;
emp1.id = 1;
strcpy(emp1.name, "张三");
emp1.salary = 8000.0;

3. 建立数据类型的别名

使用typedef还可以建立数据类型的别名,让我们可以更方便地使用标准库中的数据类型,例如将"unsigned short"定义为"ushort"。

typedef unsigned short ushort;
例子

下面是一个完整的使用typedef定义结构体类型的例子。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
    int id;
    char name[20];
    float salary;
} Employee;

Employee new_employee(int id, char name[20], float salary) {
    Employee emp;
    emp.id = id;
    strcpy(emp.name, name);
    emp.salary = salary;
    return emp;
}

void print_employee(Employee emp) {
    printf("员工ID:%d\n", emp.id);
    printf("员工姓名:%s\n", emp.name);
    printf("员工工资:%0.2f\n", emp.salary);
}

int main() {
    Employee emp1 = new_employee(1, "张三", 8000.0);
    Employee emp2 = new_employee(2, "李四", 9000.0);
    
    print_employee(emp1);
    print_employee(emp2);
    
    return 0;
}

输出:

员工ID:1
员工姓名:张三
员工工资:8000.00
员工ID:2
员工姓名:李四
员工工资:9000.00
结论

使用typedef定义新类型是C语言中的一个非常有用的特性。在使用结构体时,定义一个新类型可以让我们的代码更加简洁易读,提高代码的可维护性。