C语言 结构体struct数组(三)

ChatGPT 3.5 国内中文镜像站免费使用啦

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ 面向对象

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ 设计模式

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ STL

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C/C++ 技术杂谈

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C/C++ 常用函数


一.结构体struct前言

  1. C语言 结构体struct简介(一)
  2. C语言 结构体struct定义和使用(二)
  3. C语言 结构体struct数组(三)
  4. C语言 结构体struct指针(四)
  5. C语言 结构体struct成员函数(五)
  6. C语言 结构体struct嵌套(六)
  7. C语言 结构体struct值传递和址传递(七)

二.结构体struct简介

结构体声明(也见有称做定义一个结构体)是描述结构如何组合的主要方法。一般形式是:

struct 结构体名
{
数据类型   成员名1;
数据类型   成员名2;
:
数据类型   成员名n;
};

struct 关键词 表示接下来是一个结构体;如声明一个学生的结构:

struct Student{         //声明结构体
    char name[20];      //姓名
    int num;            //学号
    float score;        //成绩
};

三.结构体struct声明和初始化

结构体struct声明和初始化请参考历史文章:《C语言 结构体struct定义和使用(二)


四.结构体struct数组

在前面的文章《C语言 结构体struct定义和使用(二)》中有介绍一个学生或者一本书的信息可以使用结构体记录,但是如果需要记录一个班级的学生信息或者整个书店的所有书的信息呢?


1.结构体数组声明和定义

结构类型作为一种数据类型,也可以像基本数据类型那样,作为数组的元素的类型。元素属于结构类型的数组成为结构型数组。

struct Student{         //声明结构体
    char name[20];      //姓名
    int num;            //学号
    float score;        //成绩
};
struct Student stu1[5];    //定义结构体数组变量

2.结构体数组初始化

a.定义结构数组的同时进行初始化

//定义结构体数组变量,数组有两个元素
struct Student stu[2] = {{"Mike", 27, 91},{"Tom", 15, 88.0}}; 

b.定义结构体数组变量

//定义结构体数组变量,数组有五个元素,指定下标初始化
struct Student stu[5];    
stu[0] = (struct Student){"Mike", 100, 55.0};
stu[2] = (struct Student){"Jack", 12, 85.0};

c.将结构体变量的成员逐个赋值

strcpy(stu[3].name, "Smith");
stu[3].num = 18;
stu[3].score = 90.5;

3.结构体数组遍历

结构体数组遍历和普通数组遍历类似,举个例子:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言 结构体struct数组(三)
//@Time:2021/11/06 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/

#include <stdio.h>

struct Student{         //声明结构体
    char name[20];      //姓名
    int num;            //学号
    float score;        //成绩
};
	
int main () {
	
	struct Student stu[5];    
    stu[0] = (struct Student){"Mike", 100, 55.0};
	stu[1] = (struct Student){"Tom", 66, 98.0};
	stu[2] = (struct Student){"Zhang", 33, 100.0};
	stu[3] = (struct Student){"Pen", 22, 23.0};
    stu[4] = (struct Student){"Jack", 12, 85.0};
	
	for(int i = 0;i < 5;i++)
	{
		printf("姓名:%s\n",stu[i].name);
	    printf("学号:%d\n",stu[i].num);
	    printf("成绩:%f\n",stu[i].score);
		printf("\n");
	}
	return 0;
}
/*
姓名:Mike
学号:100
成绩:55.000000

姓名:Tom
学号:66
成绩:98.000000

姓名:Zhang
学号:33
成绩:100.000000

姓名:Pen
学号:22
成绩:23.000000

姓名:Jack
学号:12
成绩:85.000000
*/

4.结构体数组修改

结构体数组修改的话,直接找到对应的下标的结构直接修改对应的元素即可;


五.猜你喜欢

  1. C语言 数组下标越界和内存溢出区别
  2. C语言 使用指针遍历数组
  3. C语言 指针和数组区别
  4. C语言 指针数组和数组指针区别
  5. C语言 野指针
  6. C语言 函数值传递和址传递
  7. C语言 函数不定长参数
  8. C语言 函数指针
  9. C语言 指针函数
  10. C语言 回调函数 callback
  11. C语言 #pragma once
  12. C语言 #include <> 与 #include “” 区别
  13. C语言 const 修饰函数参数
  14. C语言 const 和 define 区别
  15. C语言 #运算符
  16. C语言 ##运算符
  17. C语言 __VA_ARGS__
  18. C语言 ##__VA_ARGS__
  19. C语言 函数不定长参数 ##__VA_ARGS__经典案例
  20. C语言 va_start / va_end / va_arg 自定义 printf 函数
  21. C语言 main 函数参数 main(int argc, char *argv[])
  22. C语言 全局变量和局部变量区别
  23. C语言 static
  24. C语言 extern
  25. C/C++ Unicode 和多字节区别
  26. C/C++ wprintf 输出中文乱码
  27. C/C++ char 和 wchar_t 相互转换
  28. C/C++ NaN(Not a Number)
  29. C语言 枚举enum简介(一)
  30. C语言 枚举enum声明变量和使用(二)
  31. C语言 共用体union
  32. C语言 结构体struct简介(一)
  33. C语言 结构体struct定义和使用(二)
  34. C语言 结构体struct数组(三)

ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容