自定义数据类型——初识
/* 引入: 学生:姓名,学号,年龄,成绩 请为学生们专门定制一个类型(创造一个类型) 结构体格式: struct 标识符 // 标识符即自定义类型的名称 { 成员; // 自己设置 }; // 这里要注意不要漏了分号 struct Students // 定义一个学生类型 { char name[12]; int id; int age; int score; }; 我们知道: 类型 变量名; int x; x = 10; // 赋值操作 ---初始化操作 int y = 10; 那么同理: 结构化类型 结构体变量名; struct Students stu_1; stu_1 = {"张三", 52, 18, 616}; // 为4个成员初始化 其他内容补充: 1.访问结构体变量的成员 stu_1.name; stu_1.id; stu_1.age; stu_1.score; 2.成员赋值 stu_1.name = "张三"; // 操作错误!! 正确操作为: 1.引入头文件<string.h> 2.strcpy(stu_1.name, "张三") // 作用:将后面字符串"复制到"前面 stu_1.id = 52; // 操作正确 stu_1.age = 18; // 操作正确 stu_1.score = 616; // 操作正确 */ # include <stdio.h> # include <string.h> // 定义一个学生类型,类似于创造int、long...这些类型,只不过学生类型是自定义罢了 struct Students { char name[12]; int id; int age; int score; }; int main() { struct Students stu_1; stu_1.age = 18; strcpy(stu_1.name, "张三"); printf("%s, %d\n", stu_1.name, stu_1.age); struct Students stu_2 = { "李四", 39, 17, 553 }; printf("%s, %d\n", stu_2.name, stu_2.age); }
自定义类型——给类型取别名
# include <stdio.h> struct Human // 定义一个 (struct)Human 类型 { char name[12]; int age; }; int main() { typedef int Myint; // 将int类型“取别名”为 Myint int x = 1; Myint y = 1; printf("%d\n", x + y); typedef struct Human hm; // 将 struct Human 类型取别名hm hm obj_1 = { "tomato", 18 }; printf("%s %d \n", obj_1.name, obj_1.age); return 0; } /* 补充: 在定义一个自定义类型的时候 往往直接当场取别名,而不是以后才取 e.g. struct Human // 定义一个 (struct)Human 类型 { char name[12]; int age; }typedef hm; // 直接当场取别名为hm */
自定义类型——结构体数组
# include <stdio.h> // 定义一个类型 struct Hero { char name[12]; int level; }typedef hr; // 取别名 int main() { // 初始化 hr hero_1 = { "钢铁侠", 8 }; hr hero_2 = { "蜘蛛侠", 7 }; // 初始化 hr hero_arr[9] = { { "惊奇队长", 10 }, { "美国队长", 7 }, { "雷神", 8 }, { "绿巨人", 9 }, // 剩下的使用默认 }; // 修改 hero_arr[0] = hero_1; return 0; }
自定义类型——联合类型
/* union语法形式如下所示: union 名字 // union 关键字是用来定义"联合类型" { 成员; // 见详情 } 详情: 修改一个成员的值,所有成员的值都会相应的产生变化 原因:所有成员,内存是相同的(---如何理解?) ---如何理解? 如下面代码中,num、d、ch 并不是各自独立占据一块内存, 而是先看谁最大,因为 double 占8个字节,比 int 占的4个字节 和 char 占的1个字节都要大,即 double > int > char 所以,所有的成员,即整体一共被分配了8个字节 因此,不同成员之间会出现联合占据某块内存空间的情况 而在本例中,double 占了8/8,int 占了4/8,char 占了1/8 */ # include <stdio.h> union HUMAN { int num; double d; char ch; }typedef hm; // 取别名 int main() { hm u_1; u_1.num = 66; u_1.d = 10.0; u_1.ch = 'A'; return 0; }
自定义类型——枚举
标签:name,04,int,age,C语言,stu,类型,struct From: https://www.cnblogs.com/seventy/p/c-04.html