写点什么

C 语言自定义类型 | AI 工程化部署

作者:AIWeker
  • 2023-12-01
    福建
  • 本文字数:1377 字

    阅读完需:约 5 分钟

1. 结构体

C 语言中的结构体是一种用户自定义的数据类型,允许将不同类型的数据组合在一起。它由多个成员变量组成,每个成员变量可以是不同的数据类型,包括基本数据类型、数组、指针等。


结构体的作用是可以用来组织和管理相关的数据,并且可以进行整体操作。它可以用于表示复杂的数据结构,如学生信息、员工信息等。


在使用结构体时,需要注意以下几点:


  1. 定义结构体:使用关键字struct定义结构体,指定成员变量的类型和名称。

  2. 访问结构体成员:通过成员运算符.来访问结构体的成员变量。

  3. 结构体作为参数:可以将结构体作为函数参数传递,并在函数内部对其进行操作。

  4. 结构体指针:可以使用指针来引用和操作结构体,通过指针访问结构体的成员变量。


在使用结构体时,需要注意成员变量的访问权限和数据的有效性,避免出现内存访问错误和数据损坏。同时,要注意结构体的内存对齐和填充,以免造成内存浪费和性能损失。


以下是一个简单的例子:


#include <stdio.h>#include <stdlib.h>
// 定义一个结构体struct Student { char name[20]; int age; float score;};
int main() { // 用指针指向结构体,并分配内存 struct Student *studentPtr = (struct Student*)malloc(sizeof(struct Student));
// 使用指针访问结构体成员 strcpy(studentPtr->name, "John"); studentPtr->age = 20; studentPtr->score = 85.5;
// 打印结构体成员 printf("Name: %s\n", studentPtr->name); printf("Age: %d\n", studentPtr->age); printf("Score: %.2f\n", studentPtr->score);
// 释放内存 free(studentPtr);
return 0;}
复制代码


还可以使用 typedef 关键字来定义结构体的别名,使代码更加简洁易读,声明结构体变量时不需要加 struct:


#include <stdio.h>
// 声明结构体并定义别名typedef struct { char name[20]; int age;} Person;
int main() { // 定义结构体变量 Person person1;
// 使用结构体变量...}
复制代码


使用 typedef 关键字,我们可以直接使用 Person 来定义结构体变量,而不需要再写 struct 关键字。

2. 枚举类型

枚举(enum)是一种数据类型,用于定义一组命名的常量。它可以增强代码的可读性和可维护性,避免使用魔术数字,并提供了一种更具表达力的方式来表示一组相关的常量。


枚举的应用场景包括定义状态、选项、标志等。例如,可以使用枚举来定义一组方向(上、下、左、右)、一组颜色(红、绿、蓝)、一组状态(开、关、暂停)等。


以下是一个枚举的简单例子:


#include <stdio.h>
// 定义一个枚举类型enum Color { RED, GREEN, BLUE};
int main() { // 声明一个枚举变量 enum Color selectedColor;
// 使用枚举变量 selectedColor = GREEN;
// 打印枚举值 if (selectedColor == RED) { printf("The selected color is RED\n"); } else if (selectedColor == GREEN) { printf("The selected color is GREEN\n"); } else if (selectedColor == BLUE) { printf("The selected color is BLUE\n"); }
return 0;}
复制代码


在这个例子中,枚举类型 Color 定义了三种颜色(RED、GREEN、BLUE),然后在 main 函数中声明了一个 Color 类型的枚举变量 selectedColor,并将其赋值为 GREEN。最后根据 selectedColor 的值打印相应的颜色。

发布于: 刚刚阅读数: 4
用户头像

AIWeker

关注

InfoQ签约作者 / 公众号:人工智能微客 2019-11-21 加入

人工智能微客(aiweker)长期跟踪和分享人工智能前沿技术、应用、领域知识,不定期的发布相关产品和应用,欢迎关注和转发

评论

发布
暂无评论
C语言自定义类型 | AI工程化部署_c_AIWeker_InfoQ写作社区