iOS开发分分钟搞定C语言—结构体和枚举

发表于:2016-8-19 09:27

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:CoderLFYue    来源:51Testing软件测试网采编


  一、结构体
  在前面的数组分享中,把同一类型的数据进行保存通过数组,我们可以用数组来表示这个整体,但是数组有个特点:内部的每一个元素都必须是相同类型的数据。那么如何通过一个方式将不同类型的数据进行存储呢?
  为此,C语言专门提供了一种构造类型来解决上述问题,这就是结构体,它允许内部的元素是不同类型的。
  二、结构体的定义
  1.先定义结构体类型, 在定义结构体变量
  struct student {
  int age ;
  char *name;
  double height;
  };
  struct student sd;
  2.定义结构体类型的同时定义结构体变量
  struct student2{
  int age;
  char *name;
  double height;
  }sd2;
  sd2.age = 16;
  sd2.name = “JAMES”;
  sd2.height = 1.9;
  3.定义结构体类型的同时定义结构体变量, 并且省略结构体名称
  struct {
  int age;
  char *name;
  double height;
  }sd3;
  sd3.age = 17;
  sd3.name = “james”;
  sd3.height = 1.88;
  定义结构体类型的同时定义结构体变量, 并且省略结构体名称的注意:
  弊端: 由于结构体类型没有名称, 所以以后就不能使用该结构体类型
  优点: 如果结构体类型只需要使用一次, 那么可以使用该方式
  三、结构体初始化
  1.定义的同时初始化
  struct student sd = {18,”james”,1.87};
  2.先定义后初始化(一次性初始化)
  struct student sd2;
  sd2 = (struct student){18,”james”,1.98};
  3.先定义再初始化(逐个初始化)
  struct student sd3;
  sd3.name = “james”;
  sd3.age = 18;
  sd3.height = 1.87;
  4.指定将数据赋值给指定的属性
  struct student sd4 = {.height = 1.76,.age = 19,.name = “james”};
  四、结构体数组
  跟结构体变量一样,结构体数组也有3种定义方式:
  方式一:
  struct Student {
  char *name;
  int age;
  };
  struct Student stu[5]; //定义1
  方式二:
  struct Student {
  char *name;
  int age;
  } stu[5]; //定义2
  方式三:
  struct {
  char *name;
  int age;
  } stu[5]; //定义3
  结构体数组的初始化:
  truct {
  char *name;
  int age;
  } stu[2] = { {“Jmes”, 21}, {“JJ”, 30} };
  五、结构体函数
  将结构体变量作为函数参数进行传递时,其实传递的是全部成员的值,也就是将实参中成员的值一一赋值给对应的形参成员。因此,形参的改变不会影响到实参。相当于拷贝。
  // 定义一个结构体
  struct Student {
  int age;
  };
  void test(struct Student stu) {
  printf(“修改前的形参:%d \n”, stu.age);
  // 修改实参中的age
  stu.age = 10;
  printf(“修改后的形参:%d \n”, stu.age);
  }
  int main(int argc, const char * argv[]) {
  struct Student stu = {30};
  printf(“修改前的实参:%d \n”, stu.age);
  // 调用test函数
  test(stu);
  printf(“修改后的实参:%d \n”, stu.age);
  return 0;
  }
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号