C 语言结构体和枚举完全指南:成员访问、字符串操作、枚举基础 ...

打印 上一主题 下一主题

主题 909|帖子 909|积分 2727

访问结构体成员

要访问结构体的成员,请使用点语法 (.):
  1. // 创建名为 myStructure 的结构体
  2. struct MyStructure {
  3.   int myNum;
  4.   char myLetter;
  5. };
  6. int main() {
  7.   // 创建名为 s1 的 myStructure 的结构体变量
  8.   struct MyStructure s1;
  9.   // 为 s1 的成员分配值
  10.   s1.myNum = 13;
  11.   s1.myLetter = 'B';
  12.   // 打印值
  13.   printf("My number: %d\n", s1.myNum);
  14.   printf("My letter: %c\n", s1.myLetter);
  15.   return 0;
  16. }
复制代码
现在您可以使用只使用一个结构体,轻松创建多个具有不同值的结构体变量:
  1. // 创建不同的结构体变量
  2. struct MyStructure s1;
  3. struct MyStructure s2;
  4. // 为不同的结构体变量分配值
  5. s1.myNum = 13;
  6. s1.myLetter = 'B';
  7. s2.myNum = 20;
  8. s2.myLetter = 'C';
复制代码
如何在结构体中使用字符串?

请记住,C 语言中的字符串实际上是字符数组,不幸的是,您无法像这样为数组分配值:
  1. struct MyStructure {
  2.   int myNum;
  3.   char myLetter;
  4.   char myString[30]; // 字符串
  5. };
  6. int main() {
  7.   struct MyStructure s1;
  8.   // 尝试为字符串分配值
  9.   s1.myString = "Some text";
  10.   // 尝试打印值
  11.   printf("My string: %s", s1.myString);
  12.   return 0;
  13. }
复制代码
会发生错误:
prog.c:12:15: error: assignment to expression with array type
但是,有一个解决办法!您可以使用 strcpy() 函数并将值分配给 s1.myString,如下所示:
  1. struct MyStructure {
  2.   int myNum;
  3.   char myLetter;
  4.   char myString[30]; // 字符串
  5. };
  6. int main() {
  7.   struct MyStructure s1;
  8.   // 使用 strcpy 函数为字符串分配值
  9.   strcpy(s1.myString, "Some text");
  10.   // 打印值
  11.   printf("My string: %s", s1.myString);
  12.   return 0;
  13. }
复制代码
结果:
My string: Some text
更简单的语法

您也可以在声明时为结构体变量的成员分配值,只需一行。
只需在花括号 {} 内插入一个以逗号分隔的列表中的值。请注意,您不必使用 strcpy() 函数来为字符串值使用此技术:
  1. // 创建结构体
  2. struct MyStructure {
  3.   int myNum;
  4.   char myLetter;
  5.   char myString[30];
  6. };
  7. int main() {
  8.   // 创建一个结构体变量并为其分配值
  9.   struct MyStructure s1 = {13, 'B', "Some text"};
  10.   // 打印值
  11.   printf("%d %c %s", s1.myNum, s1.myLetter, s1.myString);
  12.   return 0;
  13. }
复制代码
注意:插入的值的顺序必须与结构体中声明的变量类型的顺序一致(对于 int 为 13,对于 char 为 'B',等等)。
C 语言中的枚举 (enum)

枚举 (enum) 是一种特殊类型,用于表示一组常量(不可更改的值)。
要创建枚举,请使用 enum 关键字,后跟枚举的名称,并用逗号分隔枚举项:
  1. enum Level {
  2.   LOW,
  3.   MEDIUM,
  4.   HIGH
  5. };
复制代码
注意,最后一个项目不需要逗号。
使用大写字母不是必需的,但通常被认为是良好的实践。
Enum 是“enumerations”的缩写,意为“特别列出”。
要访问枚举,您必须创建一个变量。
在 main() 方法中,指定 enum 关键字,后跟枚举的名称 (Level) 和枚举变量的名称 (myVar):
  1. enum Level myVar;
复制代码
现在您已创建了一个枚举变量 (myVar),可以为其分配一个值。
分配的值必须是枚举中的项目之一 (LOW、MEDIUM 或 HIGH):
  1. enum Level myVar = MEDIUM;
复制代码
默认情况下,第一个项目 (LOW) 的值为 0,第二个 (MEDIUM) 的值为 1,依此类推。
如果现在尝试打印 myVar,它将输出 1,表示 MEDIUM:
  1. int main() {
  2.   // 创建一个枚举变量并为其分配一个值
  3.   enum Level myVar = MEDIUM;
  4.   // 打印枚举变量
  5.   printf("%d", myVar);
  6.   return 0;
  7. }
复制代码
更改值

如您所知,枚举的第一个项目的值为 0。 第二个值为 1,依此类推。
为了使值更易于理解,您可以轻松地更改它们:
  1. enum Level {
  2.   LOW = 25,
  3.   MEDIUM = 50,
  4.   HIGH = 75
  5. };
  6. printf("%d", myVar); // 现在输出 50
复制代码
请注意,如果您为一个特定项目分配值,则下一个项目将相应地更新其编号:
  1. enum Level {
  2.   LOW = 5,
  3.   MEDIUM, // 现在为 6
  4.   HIGH // 现在为 7
  5. };
复制代码
枚举在 switch 语句中

枚举通常在 switch 语句中使用,以检查相应的值:
  1. enum Level {
  2.   LOW = 1,
  3.   MEDIUM,
  4.   HIGH
  5. };
  6. int main() {
  7.   enum Level myVar = MEDIUM;
  8.   switch (myVar) {
  9.     case 1:
  10.       printf("Low Level");
  11.       break;
  12.     case 2:
  13.       printf("Medium level");
  14.       break;
  15.     case 3:
  16.       printf("High level");
  17.       break;
  18.   }
  19.   return 0;
  20. }
复制代码
为什么和何时使用枚举?

枚举用于为常量命名,这使代码更易于阅读和维护。
当您拥有不会改变的值时,例如月天、日、颜色、纸牌等等,请使用枚举。
最后

为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

民工心事

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表