struct 名称
{
类型 成员变量名
};
- struct stu
- {
- char name[11];
- int age;
- char address[100];
- };
- int main() {
- struct stu stu1; //struct stu 这个整体是一个类型就像是int
- //stu1.name = "张三"; 数组常量没有办法赋值错误
- strcpy(stu1.name, "张三"); //strcpy 赋值字符串到指定内存空间
- stu1.age = 19;
- strcpy(stu1.address, "河北省保定市");
-
-
- //结构体的输出
- printf("姓名:%s\n", stu1.name);
- printf("年龄:%d\n", stu1.age);
- printf("地址:%s\n", stu1.address);
-
- return 0;
- }
- int main() {
- struct stu stu2 = { "李四",20,"中国" };
- printf("姓名:%s\n", stu2.name);
- printf("年龄:%d\n", stu2.age);
- printf("地址:%s\n", stu2.address);
- return 0;
- }
- struct stu
- {
- char name[11];
- int age;
- char address[100];
- } stu3 = {"王五",11,"北京"};
- int main() {
- //直接输入信息
- struct stu stu66;
- printf("请您输入信息:");
- scanf("%s%d%s", stu66.name, &stu66.age, stu66.address); //数组就是地址,所以不用加取地址的符号& 中间打空格直接输入就OK
- printf("姓名:%s\n", stu66.name);
- printf("年龄:%d\n", stu66.age);
- printf("地址:%s\n", stu66.address);
-
- return 0;
- }
跟c中普通类型的数组定义过程是一样的
如 int arr[3];
struct student stu[3];// 学生类型的数组
也可以使用sizeof来获取长度
- #include
- struct student
- {
- char name[21];
- int souce[3];//成绩
- };
- int main() {
- //结构体数组赋值
- struct student stu[3] = {
- {"张三",11,22,33},
- {"李四",44,55,66},
- {"王五",77,88,99}
- };
-
- //遍历信息
- for (int i = 0; i < 3; i++)
- {
- printf("姓名:%s\n", stu[i].name);
- printf("数学成绩:%d\n", stu[i].souce[0]);
- printf("英语成绩:%d\n", stu[i].souce[1]);
- printf("语文成绩:%d\n", stu[i].souce[2]);
- printf("-------------------------\n");
- }
-
-
- //使用sizeof计算大小
- //一般都会比定义的时候大一点,因为结构体成员需要内存偏移
- printf("数组的大小为%d\n", sizeof(stu));
- printf("数组中元素的大小为:%d\n", sizeof(stu[0]));
- printf("数组中元素个数:%d\n", sizeof(stu) / sizeof(stu[0]));
-
-
- return 0;
- }
这里采用的是对年龄进行最简单的冒泡排序
完全就可以当成变量去直接的交换
- #include
- struct student
- {
- char name[21];
- int age;
- };
- int main()
- {
- //创建学生类型的数组并赋初值
- struct student stu[4]={
- {"张三",51},
- {"李四",11},
- {"王五",21},
- {"赵6",5}
- };
- for (int i = 0; i < 4; i++)
- {
- printf("姓名:%s\n", stu[i].name);
- printf("年龄: %d\n", stu[i].age);
- printf("-------------------------\n");
- }
- //开始排序(这里使用的是最简单的冒泡排序)
- for (int i = 0; i < 3; i++) {
- for (int j = 0; j < 3 - i;j++) {
- if (stu[j].age > stu[j + 1].age) { //升序
- //定义一个临时变量交换
- struct student temp = stu[j];
- stu[j] = stu[j + 1];
- stu[j + 1] = temp;
- }
-
- }
- }
-
- printf("排序后\n");
- for (int i = 0; i < 4; i++)
- {
- printf("姓名:%s\n", stu[i].name);
- printf("年龄: %d\n", stu[i].age);
- printf("-------------------------\n");
- }
- return 0;
-
-
- }