大佬教程收集整理的这篇文章主要介绍了C语言----结构与联合(基础篇十一) ,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
更新中...
结构的作用
※处理大量的数据,除了使用数组外,还有一个方法,就是使用结构。
※以前我们只学过int,double,char等几种类型,学了结构以后,程序员就可以定义自己的类型。
※从二维表格理解结构(见Excel演示)
结构类型的定义
定义格式:
struct 结构名
成员表列
}变量名表列;
结构名”和“变量名表列”可省略,初学者在使用结构时,一般可省略后面的变量名表列,以便于理解。
如:
struct student
char name[20]; /*姓名*/
char sex[3]; /*性别*/
int age; /*年龄*/
};
※上面定义了一个结构student,中间是此结构的3个成员变量。记住,它们不可以赋初值,目前只是个躯壳。
※那么什么时候才能给里面的成员赋值呢?那就是定义此结构类型的变量。
※结构在定义时,后面的分号不可少。
结构变量
定义格式:
struct 结构名 变量名;
如:
此处的stu就是一个student类型的变量。和数组一样,它也可以在定义的时候初始化,但是格式有些不同:
struct student stu={“张三”,”男”,23};
注意:结构变量初始化,必须根据成员变量的类型逐个赋初值,而数组中所有的元素都是赋同样类型的值。
使用结构变量
结构变量不能直接引用,必须使用·号对结构中的成员变量进行操作,如:
stu.age=18; /*赋值*/
※成员变量像普通变量一样可进行数学运算。
程序1
学生结构
// 11_1学生结构体 #include <stdio.h> #include <String.h> struct student //定义变量 { char name[20]; char sex[3]; int age; }; int main() { struct student stu; struct student stu1 = {"李四","女",19}; //变量赋值 struct student stu2 = {"王二麻子","男",25}; stu.age = 23; strcpy(stu.name, "张三"); //字符串赋值 strcpy(stu.sex, "男"); puts(stu.Name); //字符串输出函数 printf("%d\n", stu.agE); }
联合
在“我的电脑->文件夹选项”中有两种按钮,圆形的是单选按钮,方形的是多选按钮。结构就类似于多选按钮,你可以同时使用其中多个成员变量。联合就相当于单选按钮,无论何时,你只能使用其中一个成员变量,并且只有最后一次 设置的成员变量有效。
结构 与 联合的区别:
结构相当于多选框,可以选择多种变量。
联合相当于单选框,只能选择一个变量,并且变量是以最后的使用为依据的。
联合的定义格式与结构差不多,只是前面的struct改成union。除此之外,联合还有以下特点:
※只能对联合的第一个成员进行初始化。
如:
union un
int i;
double d;
}un1={10}; //只能初始化一个变量,联合是单选。
※联合变量的地址和它的各成员都是同一地址,因为它是“联合”。
※联合与结构之间可以嵌套定义
程序2
网友在互通QQ的时候,通常不是给号码就是给昵称,如何用联合来表达?
// 11-2-QQ联合 网友在互通QQ的时候,通常不是给号码就是给昵称,如何用联合来表达? #include <stdio.h> #include <String.h> union QQ { char name[20]; long number; }; int main() { union QQ qq; //定义QQ变量 strcpy(qq.name, "优雅の疯子"); printf("%s\n", qq.Name); qq.number = 787228754; printf("%ld\n", qq.number); printf("%s\n", qq.Name); }
// 11-3结构体 有3个学生结构变量,从中找出年龄最大的那个学生,并打印出这个学生的姓名、性别、年龄。 #include <stdio.h> #include<String.h> struct student { char name[20]; char sex[3]; int age; }; int main() { struct student stuR_70_11845@ax; //年龄最大的学生 struct student stu1 = {"小明","男",28}; struct student stu2 = {"7Don","男",25}; struct student stu3 = {"小红","女",18}; stuR_70_11845@ax = stu1; //年龄最大的学生始终都在stuR_70_11845@ax中 if (stuR_70_11845@ax.age < stu2.agE) //这里要注意比较的时候是比结构中的年龄 stuR_70_11845@ax = stu2; //赋值的时候是直接赋值结构 if (stuR_70_11845@ax.age < stu3.agE) stuR_70_11845@ax = stu3; printf("%s,%s,%d\n", stuR_70_11845@ax.name, stuR_70_11845@ax.sex, stuR_70_11845@ax.agE); /*只能将元素一个一个地输出*/ }
以上是大佬教程为你收集整理的C语言----结构与联合(基础篇十一) 全部内容,希望文章能够帮你解决C语言----结构与联合(基础篇十一) 所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。